我目前正在使用 构建一个多页表单$_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\" ";} ?>
它工作得很好,不同的形式 - 如果已经设置了值 - 预先填充就好了。
如您所见,我的问题是,如果我返回并更改一个值,则不会考虑它,因为我忽略POST
了SESSION
.
我不知道如何使它正常工作......有什么提示吗?