使用后退按钮后PHP“文档已过期”

时间:2012-07-11 06:54:53

标签: php post smarty

我有一个表单,我在向导中提交了一些信息。此页面通过POST到达并与Smarty一起显示。一旦我提交了所有信息,我正在使用另一个帖子来到另一个页面。现在,问题是,当我尝试使用BACK按钮返回时,我正在查找“文档已过期”消息。

当我使用POST时,这是否正常?

我现在正在尝试使用GET,但没有任何变化,或者我的GET写错了。

这是一个小模式:

Page 1 -> POST -> Page 2 (wizard) -> POST -> Page 3

当我尝试从第3页回到第2页时,我认为文档已过期。

非常感谢您对我的问题的帮助。

2 个答案:

答案 0 :(得分:5)

http://en.wikipedia.org/wiki/Post/Redirect/Get

在我看来,你应该为每个 POST执行此操作,至少在生产中。

小例子:

if ('GET' == $_SERVER['REQUEST_METHOD']) {
   //display view
}
else if ('POST' == $_SERVER['REQUEST_METHOD']) {
   //process input
   //update session
   header('Location: /next/page/to/view', true, 303);
}
编辑:想要指出这篇旧帖子指的是浏览器提交。在RESTful Web服务中,您可能会回复201 for POST。

答案 1 :(得分:1)

一切都是正确的。当您在BACK上按Page 3时,实际上是在尝试转到上一页 - 此页面会生成为对bowser的POST请求的回复。要查看此页面,应发送新的POST请求,并依赖POST数据生成页面。