2

我目前正在使用 构建一个多页表单$_SESSION,到目前为止一切正常。然而,即使我能够在 6 页末尾检索所有数据,但如果用户出错,似乎无法返回表单。

假设他在第 5 页,并且他意识到他需要回到第 3 页来更改某些内容,但他将无法这样做。Firefox 给出此错误消息:

文档已过期 此文档不再可用。请求的文档在 Firefox 的缓存中不可用。作为安全预防措施,Firefox 不会自动重新请求敏感文档。单击重试可从网站重新请求文档。

这是我的表单的样子,这个是 Form-1.php :

<form action="Form-2.php" method="post">
        <fieldset>
                <legend>Information</legend>
                <p>
                    <label for="name">Name</label>
                    <input id="name" type="text" name="name" required/>
                </p>
                <p>
                    <label for="age">Age</label>
                    <input id="age" type="number" name="age" placeholder="Ex. 1988" required/>
                </p>
                <p>
                    <input id="sex-m" type="radio" name="sex" value="Male" required/>
                    <label for="sex-m">Male</label>
                    <input id="sex-f" type="radio" name="sex" value="Female" required/>
                    <label for="sex-f">Female</label>
                </p>
        </fieldset>
        <input type="submit" value="Next page"/>
</form>

SESSION用来从以前的表单中检索数据,这个来自 Form-2.php :

session_start();

$_SESSION['name'] = $_POST['name'];
$_SESSION['age'] = $_POST['age'];
$_SESSION['sex'] = $_POST['sex'];

六页以此类推。

它工作正常,它可以正确检索所有值,但是在填写表单时无法返回。

我究竟做错了什么?如果用户犯了错误,我如何确保用户能够返回?

谢谢你的帮助。

编辑 :

我最终得到了以下代码,解决了我的一半问题。仍然来自 Form-2.php :

session_start();

if (isset($_SESSION['location']) && isset($_SESSION['job'])) {
        $location = $_SESSION['location'];
        $job = $_SESSION['job'];
} else {
        $_SESSION['name'] = $_POST['name'];
        $_SESSION['age'] = $_POST['age'];
        $_SESSION['sex'] = $_POST['sex'];

        $location = '';
        $job = '';
}

然后我简单地显示字段中的值:

如果文本:<?php echo $location; ?>

如果收音机:<?php if(isset($job) && $job == "Yes"){echo "checked=\"checked\" ";} ?>

它工作得很好,不同的形式 - 如果已经设置了值 - 预先填充就好了。

如您所见,我的问题是,如果我返回并更改一个值,则不会考虑它,因为我忽略POSTSESSION.

我不知道如何使它正常工作......有什么提示吗?

4

2 回答 2

1

不是最好的解决方案,但确实有效:不要使用后退按钮,提供您自己的前进、后退、“步进”按钮。然后使用存储在会话中的数据填充表单。

于 2012-05-11T08:14:36.087 回答
0

djot 是对的,您需要一个 << back >> 和 << forward >> 按钮,您可以在功能上做的是,如果单击后退按钮,则将页面/表单的值作为隐藏输入字段传递并使用填充字段隐藏的价值..

于 2012-05-11T08:25:56.223 回答