我想我的问题是理解 $_POST 处理。
所以我有两个页面处理 2 个表单。第 1 页要求提供一些将在第 2 页中使用的信息。提交后,表单操作使用同一页面,然后在验证后重定向到下一页,但仅在 $_GET 变量 时处理数据?usersubmit=1。
<form action="<?=$_SERVER['PHP_SELF']?>?usersubmit=1" method="post" name="form1">
<input type="text" name="field1">
</form>
假设我有一个名为 form1.php 的页面。提交后发送至 form1.php?usersubmit=1。现在,页面将发布的数据分配给 session 变量,然后通过 header('location:form2.php') 重定向到 form2.php。
<?
if($_GET['usersubmit']){
if($_POST['field1']){
#if valid then assign session variable and redirect to next form
$_SESSION['field1'] = $_POST['field1'];
header("location:form2.php");
}else{
#if invalid send error message
$error = true;
}
}
?>
我的问题是当用户点击浏览器上的“后退”按钮来编辑先前表单中的数据时。浏览器不会重新发布这些数据,它只是向他们显示一个空白表单。我不想使用 $_SESSION 数据来填写表格,因为我怀疑重新发布方法可能是一种更快且问题更少的修复方法。
我还尝试了 JavaScript 重定向而不是 header ,但浏览器足够智能,不会将您送回到想要重定向您的页面,因此它不起作用。
任何有助于理解这一点的帮助将不胜感激。 谢谢。
最佳答案
处理它的唯一方法是通过 session ... HTML5 允许存储此类数据,但说实话,我什至还没有将其视为一种可能性,尽管它确实有效。
关于php - 如何让浏览器在使用后退按钮时重新发布表单数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8641679/