0

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

4

3 回答 3

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'] .'" />';
}

类似的东西!玩得开心!

于 2011-01-27T06:39:20.440 回答
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>

或者:使用会话。

于 2011-01-27T06:23:33.650 回答
1

使用 javascript 或 ajax 在同一页面中进行验证(如果您需要检查服务器端)

那么你不会丢失任何数据

您可以在网上找到许多示例(使用 ajax 查找表单验证)

喜欢这篇文章:http: //jqueryfordesigners.com/demo/ajax-validation.php

于 2011-01-27T06:21:22.750 回答