记住输入历史

时间:2011-01-27 06:18:05

标签: php html forms input-history

我正在使用一个表单,该表单使用进程页面来验证然后处理所有信息。如果出现问题或丢失,则消息会告诉用户返回页面并进行修复。但是,当他们这样做时,他们放入的所有其他信息都不会显示在字段中。我怎样才能做到这一点,无论它们放在哪里都会显示出来。

3 个答案:

答案 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