【发布时间】:2011-12-27 06:08:09
【问题描述】:
我想我的问题在于理解 $_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。页面现在将发布的数据分配给会话变量,然后通过 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 重定向而不是标头,但浏览器足够智能,不会将您发送回想要重定向您的页面,因此它不起作用。
任何有助于理解这一点的帮助将不胜感激。 谢谢。
【问题讨论】:
标签: php forms browser post back-button