我的PHP项目中有六页用于注册表单。
如果我在资源管理器栏中按后退按钮,则在任何页面之间出现错误:
网页已过期
我正在使用$_POST
提交数据。我不明白为什么会这样?
答案 0 :(得分:4)
该消息与IE处理POST数据生成的页面的方式有关。
通常,为了避免此问题,您必须确保在后面的历史记录中,用户永远无法登陆从POST请求生成的页面。正如jspcal建议的那样,您的POST响应应该是重定向到GET请求的另一个页面。这也被认为是最佳实践,因为它降低了两次提交表单的风险。
答案 1 :(得分:3)
收到帖子后重定向页面:
$name = $_POST['name'];
...
header('Location: next.php');
答案 2 :(得分:2)
当您尝试通过返回浏览器历史记录重新提交帖子数据时,这种情况总会发生在某些浏览器上(您可能正在使用Internet Explorer)。然而,许多浏览器(例如Firefox)让您有机会在回到历史记录时再次提交帖子数据。
答案 3 :(得分:0)
你试过“$ _GET”吗?这可能是因为POST信息来自之前的页面并且实际上没有保存在任何地方比页面转换更长的时间,而GET使用URL来发送信息,因此信息存储在某处。我会看到GET会发生什么。
答案 4 :(得分:0)
真正的答案是“如果您点击后退按钮,浏览器不会发送您最初访问该页面时最初发送的POST请求”,如果您正在执行多步骤表单,您可能想要做什么要么使用AJAX,要么使用GET而不是POST。