2014-02-28 69 views
-1

我有一个表格,用户需要输入他们的全名,联系电话和最佳时间来致电的细节。我想验证我的网络表单上的这些字段,以便用户不能填写表单时不提交表单。我已经使用if(empty($...))并回应了我的错误消息,但是,当我尝试提交空白表单时,它不显示任何错误消息。我怎么解决这个问题?php错误消息不显示在空白字段

CODE

<?php 
    require_once($_SERVER['DOCUMENT_ROOT'] . '/inc/bootstrap.php'); 
    include("config/cn.php"); 

    $template['template'] = "page"; 
    if($_POST) 
    { 
     // Data pulled from input form 
     $full_name = $_POST['full_name']; 
     if (empty($_POST['full_name'])) 
     { 
      // Set error and return to form 
      echo "Field cannot be left blank"; 
      header('Location: /call-back-form.php'); 
      exit; 
     } 

     $contact_number = $_POST['contact_number']; 
     if (empty($_POST['contact_number'])) 
     {  
      // Set error and return to form 
      echo "Field cannot be left blank"; 
      header('Location: /call-back-form.php'); 
      exit;  
     } 

     $best_time_to_call = $_POST['best_time_to_call']; 
     if (empty($_POST['best_time_to_call'])) 
     { 
      // Set error and return to form 
      echo "Field cannot be left blank"; 
      header('Location: /call-back-form.php'); 
      exit; 
     } 

     $enter_sql = "INSERT INTO contact (full_name, contact_number, best_time_to_call) 
      VALUES('$full_name' , '$contact_number' , '$best_time_to_call')"; 
     /*print($enter_sql);*/ 

     $enter_query = mysql_query($enter_sql) or die(mysql_error()); 
     header('Location: /thankyou.php'); 
     exit; 
    } 
?> 
+1

任何你'echo'之前调用'头() '会丢失,说实话你不应该在'header()'之前'回显'文件上的任何内容,因为它会抛出'头文件已经被传递'的错误 –

+0

你不能阻止一个表单被提交一个后端la nguage。 –

回答

0

那么,有在逻辑错误。你正在做echo然后header。这意味着它会显示消息并以比看到消息更快的速度返回到上一页。这真的是你想要做的吗?

您应该将表单发布到自身,并且只需echo而不需要显示错误的header,或者实现javascript表单验证。

此外,您还可以使用

<? 
    header('Location: /call-back-form.php?message=Error'); 
?> 

然后在回拨-form.php的用户

<? 
    echo $_GET['message']; 
?> 

在需要的地方

+0

我明白了,谢谢。有没有一种方法可以将错误信息显示在同一页面上,而不是将它显示在不同的页面上? – user3009232

+0

好的,我的代码示例就是这样做的。检测错误,然后用'message'参数重定向到表单。在表格上,您只需在需要的地方回显。 –

+0

纠正我,如果即时通讯错误,但回声会在if语句?我在哪里把标题? – user3009232