4

我有buy.php一个表格,您可以在其中输入物品、数量、运输数据等。

当您单击提交按钮时,它会回发buy.php ($_SERVER['PHP_SELF'])并进行一些数据验证。

如果缺少字段或错误,则会突出显示它们。如果一切正确,我将$_POST数据保存在$_SESSION变量中,然后执行 a header('Location: check.php'),在其中显示数据,以便买家在实际购买前最后一次检查信息。

现在,如果我进入check.php并点击返回按钮buy.php以便我可以更改内容,浏览器会询问我是否要重新发送 POST 数据。我试图避免这种情况。

有人对 PHP Multiform 验证有什么好的建议或好的做法吗?

另外,如果我有 n 个页面供用户填写,buy.php, buy2.php, ... buyn.php那么在 check.php 之前,同样的想法是否仍然成立?

4

2 回答 2

4

您可以在保存到会话对象后重定向到 buy.php,然后服务器重定向到 check.php,这意味着当用户点击返回时,他们将返回 GET 请求而不是 POST 请求

于 2008-09-11T03:35:47.033 回答
1

是的——我同意上述观点。我总是redir远离上一篇文章,所以点击返回会将它们弹回而不会出现错误或重新提交。它还避免了并发症。你总是可以redir?m&m(即:)标记链接页面并将page.php?m其放在页面顶部:(elseif之后使用)

if (isset($_GET['m'])) {
  echo 'order placed.';
}
else {
  //...
}

您也可以将所有内容都放在一页上。只需将提交按钮命名为submit1, submit2,例如:(请记住,如果您使用图像进行提交,它将变为$_POST['submit1_x']:)

if (isset($_POST[submit1]) {
  //validate + save session data from form1
  //display form 2
} else if(isset($_POST[submit2])) {
  //validate + save session data from form2
  //display form 3
} else {
  //display first form
  //<input type="submit" name="submit1" value="Continue">
}
于 2012-06-27T16:18:10.427 回答