我正在使用一个表单,该表单使用进程页面来验证然后处理所有信息。如果出现问题或丢失,则消息会告诉用户返回页面并进行修复。但是,当他们这样做时,他们放入的所有其他信息都不会显示在字段中。我怎样才能做到这一点,无论它们放在哪里都会显示出来。
答案 0 :(得分:3)
一个简单的解决方案是在发布时将所有POST数据存储在SESSION中。
if($_POST){ // if we have any POSTed variables...
$_SESSION['postdata'] = $_POST; // set a browser session with all of the values
}
然后,在您的表单页面上,检查postdata是否存在,如果存在,请填写输入值。
if($_SESSION['postdata']){ // if postdata exists
$p = $_SESSION['postdata']; // retrieve values in a new variable
unset($_SESSION['postdata']); // unset session, because you don't want this post data to travel all around your website
/* for each input or whatever you got there... */
echo '<input name="your-key-here" type="text" value="'. $p['your-key-here'] .'" />';
}
这样的东西!玩得开心!
答案 1 :(得分:2)
最好的方法是在同一页面上进行验证,并在成功时仅重定向到另一个页面:
<?php
if (!empty($_POST['foo'])) {
// validate
if (/* valid */) {
// save data somewhere
header('Location: nextpage.php');
exit();
}
}
?>
<form action="samepage.php">
<input name="foo" type="text" value="<?php if (!empty($_POST['foo'])) echo htmlentities($_POST['foo']); ?>">
<?php if (/* foo was invalid */) : ?>
<p class="error">Please fill in Foo!</p>
<?php endif; ?>
</form>
或者:使用会话。
答案 2 :(得分:1)
使用javascript或ajax在同一页面中进行验证(如果需要在服务器端检查)
然后你不会丢失任何数据
您可以在网上找到许多示例(使用ajax查找表单验证)
喜欢这篇文章:http://jqueryfordesigners.com/demo/ajax-validation.php