2

我的 PHP 项目中有六页的注册表单。

在任何页面之间,如果我按下资源管理器栏中的后退按钮,我会收到错误消息:

网页已过期

$_POST用来提交数据。我不明白为什么会这样?

4

5 回答 5

4

该消息与 IE 处理从 POST 数据生成的页面的方式有关。

一般来说,为了避免这个问题,您必须确保在回溯历史中,用户将永远无法登陆从 POST 请求生成的页面。正如jspcal 所建议的,您的 POST 响应应该是重定向到 GET 请求的另一个页面。这也被认为是最佳实践,因为它降低了两次提交表单的风险。

于 2010-01-01T03:00:44.173 回答
3

收到帖子后重定向页面:

$name = $_POST['name'];
...
header('Location: next.php');
于 2010-01-01T03:02:45.263 回答
2

当您尝试通过返回浏览器历史记录重新提交帖子数据时,这总是在某些浏览器(您可能正在使用 Internet Explorer)上发生。但是,许多浏览器(例如 Firefox)让您有机会在返回历史记录时再次提交帖子数据。

于 2010-01-01T03:01:21.520 回答
0

你试过“$_GET”吗?这可能是因为 POST 信息来自之前的页面,并且没有真正保存在任何地方比页面转换的时间长,而 GET 使用 URL 发送信息,因此信息存储在某个地方。我会看看 GET 会发生什么。

于 2010-01-01T03:01:20.490 回答
0

真正的答案是“如果您点击后退按钮,浏览器不会发送您首次访问该页面时最初发送的 POST 请求”,如果您正在执行多步骤表单,您可能想要做的事情是它与 AJAX,或使用 GET 而不是 POST。

于 2012-11-06T21:11:15.587 回答