1

我的表单在 PHP 完成的验证中运行良好。我有三个字段:姓名、电子邮件和消息。表单和 PHP 代码在同一个 pgae 中,当用户提交表单时,会调用同一个页面进行验证。

当用户提交表单时,会调用同一页面并检查表单是否已提交。如果表单已提交,则对空白条目进行验证,并在字段下方抛出错误消息以通知用户该字段留空。它还在字段旁边显示错误图标。

到此为止,它工作正常。

但是,问题是,如果用户填写了任何字段,例如名称字段并将其他两个字段(电子邮件和消息)留空,那么在提交时,它会为空白字段抛出错误消息,这是可以的,但对于名称字段由用户填写,它清空内容并显示空白名称字段并且不显示错误(如早期用户填写的那样)。

我唯一担心的是,当它在提交后重新加载表单时,它还应该重新加载用户在提交之前输入的各个字段中的早期值。

下面是 PHP 验证代码。

<?php
error_reporting(E_ALL & ~E_NOTICE);

    if(isset($_POST['nameField_Name']) AND isset($_POST['nameField_EMail']) AND isset($_POST['nameField_Message']) AND isset($_POST['nameSubmit'])){  
        // Form Submited  
        if ($_POST['nameField_Name']) {
    $phpVarNameField = mysql_escape_string($_POST['nameField_Name']);
} else {
    $errormsgNameField = "Name field is required, Please enter your Name.";

}

if ($_POST['nameField_EMail']) {
    $phpVarEMailField = mysql_escape_string($_POST['nameField_EMail']);
} else {
    $errormsgEMailField = "E-Mail field is required, Please enter your E-Mail ID.";
}

if ($_POST['nameField_Message']) {
    $phpVarMessageField = mysql_escape_string($_POST['nameField_Message']);
} else {
    $errormsgMessageField = "Message field is required, Please enter your Message.";
}
    }  
?>

下面是表格代码。

                <form name="myform" action="contactus.php" method="post"">
                <div id="r1">
                    <div id="r1c1">
                        <input type="text" name="nameField_Name" id="idField_Name" placeholder="Enter your name here"/>
                    </div>
                    <div id="r1c2">
                 <?php  
                      if(isset($errormsgNameField)){  // Check if $msg is not empty  
                  echo '<img src="error.png" width="45" height="45" style="margin: 5px 0px" alt="">';
                      }  
                    ?> 
                    </div>
                </div>
                <div id="afterr1">
               <?php  
                      if(isset($errormsgNameField)){  // Check if $msg is not empty  
                  echo '<div class="statusmsg" id="idErrorMsgNameField">'.$errormsgNameField.'</div>'; // Display our message and wrap it with a div with the class "statusmsg".  
                      }  
                    ?>  

                </div>
                <div id="r2">
                    <div id="r2c1">
                        <input name="nameField_EMail" type="text" id="idField_EMail" placeholder="Enter your E-Mail address here" />
                    </div>
                    <div id="r2c2">
                <?php  
                      if(isset($errormsgEMailField)){  // Check if $msg is not empty  
                  echo '<img src="error.png" width="45" height="45" style="margin: 5px 0px" alt="">';
                      }  
                    ?> 
                    </div>
                </div>
                <div id="afterr2">
                <?php  
                      if(isset($errormsgEMailField)){  // Check if $msg is not empty  
                  echo '<div class="statusmsg" id="idErrorMsgEMailField">'.$errormsgEMailField.'</div>'; // Display our message and wrap it with a div with the class "statusmsg".  
                      }  
                    ?>  
                </div>
                <div id="r3">
                    <div id="r3c1">
                        <textarea name="nameField_Message" id="idField_Message" placeholder="Enter your message for us here"></textarea>
                    </div>
                    <div id="r3c2">
                <?php  
                      if(isset($errormsgMessageField)){  // Check if $msg is not empty  
                  echo '<img src="error.png" width="45" height="45" style="margin: 115px 0px" alt="">';
                      }  
                    ?> 

                    </div>
                </div>
                <div id="afterr3">
                <?php  
                      if(isset($errormsgMessageField)){  // Check if $msg is not empty  
                  echo '<div class="statusmsg" id="idErrorMsgMessageField">'.$errormsgMessageField.'</div>'; // Display our message and wrap it with a div with the class "statusmsg".  
                      }  
                    ?>  
                </div>

                <div id="r4">
                    <div id="r4c">
                        <input type="Submit" name="nameSubmit" id="idButton_Submit" value="Submit"  alt="Submit Button"/>
                    </div>
                </div>
                </form>

任何帮助都会很好。

谢谢你。

4

3 回答 3

4

您需要在元素value上添加一个属性:<input>

<input type="text"
       name="whatever"
       value="<?php echo htmlspecialchars($_POST['whatever']); ?>"
>

如果 PHP 输出该字段可能更容易阅读:

<?php
printf('<input type="text" name="%s" value="%s">',
       'whatever',
       htmlspecialchars($_POST['whatever']));
?>

这甚至可以包装在一个函数中,因此您无需为每个表单字段重新键入它。

注意对htmlspecialchars的调用。它是必需的,这样<>和引号不会破坏您的 HTML 文档。

于 2012-06-28T06:17:07.853 回答
1

好吧,您可以使用 jQuery 验证插件进行验证 - 简单又好。jQuery插件

或者使用 PHP 将 POST 数据存储在数组中,检查错误和非空字段设置为输入文本的值。

if (isset($_POST)) {
    $data = $_POST;
}
foreach ($data as $row) {
    if ($row == "")
        $error = true; // do what ever you want
}

and then in form
<input type="text" name="name" value="<?php ($data['name'] != "")? $data['name'] : '' ?>" />

像这样的东西。

于 2012-06-28T06:19:35.113 回答
1

尝试更改您的标签,例如:

<input type="text" 
  name="nameField_Name" 
  id="idField_Name" 
  placeholder="Enter your name here" 
  value ="<?php 
             if (isset($phpVarNameField)) 
              echo $phpVarNameField; 
         ?>"
/>
.......
<input 
   name="nameField_EMail" 
   type="text" 
   id="idField_EMail" 
   placeholder="Enter your E-Mail address here" 
   value ="<?php if (isset($phpVarEMailField)) echo $phpVarEMailField; ?>" 
 />
.......
<textarea name="nameField_Message" id="idField_Message" placeholder="Enter your message for us     
here" value ="<?php if (isset($phpVarMessageField)) echo $phpVarMessageField; ?>" ></textarea>

祝你好运 !

于 2012-06-28T06:37:02.197 回答