当数据验证失败时保留表单字段中的值

2024-06-20

我在弄清楚验证失败时如何保留用户数据时遇到问题。我对 PHP 有点陌生,所以我的逻辑可能会犯一些巨大的错误。

目前,如果验证失败,所有字段都会被清除,并且 $_Post 数据也会消失。

这是一些代码,假设用户输入无效电子邮件,我希望保留“名称”字段。该代码不起作用。

<?php
if($_POST['doSubmit'] == 'Submit') {

   $usr_name = $data['Name'];
   $usr_email = $data['Email'];

   if (isEmail($usr_email)==FALSE){
       $err = "Email is invalid.");
       header("Location: index.php?msg=$err");
       exit();
    }

   //do whatever with data

}

if (isset($_GET['msg'])) {
   $msg = mysql_real_escape_string($_GET['msg']);
   echo "<div class=\"msg\">$msg</div><hr />";
}
if (isset ($_POST['Name'])){
   $reusername = $_POST['Name'];}
else{$reusername = "NOTHING";}//to test

 ?>
 <form action="index.php" method="post" >
 <input name="UserName" type="text" size="30" value="<?echo $reusername;?>">
 <input name="Email" type="text" size="30">
 <input name="doSubmit" type="submit" value="submit">
 </form>




 }

您可以使用 AJAX 将表单数据提交到 PHP 脚本,并让它返回指定验证是否成功的 JSON 数据。这样,你的田地就不会被抹干净。

另一种方法是将记录的参数发送回发布页面,并在发布页面中使用PHP填充字段。

不过,我认为第一种解决方案更好。

UPDATE

编辑使您的代码更加清晰,所以我注意到了一些事情。您的输入字段称为UserName在 HTML 中,但您指的是Name在 PHP 中。这可能就是它不起作用的原因。您的领域是否始终充满价值NOTHING?确保输入字段的名称和您使用的下标$_POST是相同的。

此外,如果出现错误,无需重定向到另一个页面(使用标头)。维持一个$errors用于在同一页面中打印错误消息的数组或变量。但就像我之前提到的,最好使用 JSON 方法,因为这样您就可以将视图层(html)与 PHP(控制器层)分开。因此,您可以将 HTML 放入一个文件中,将 PHP 放入另一个文件中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当数据验证失败时保留表单字段中的值 的相关文章

随机推荐