我有一个表单,我在向导中提交了一些信息。此页面通过POST到达并与Smarty一起显示。一旦我提交了所有信息,我正在使用另一个帖子来到另一个页面。现在,问题是,当我尝试使用BACK按钮返回时,我正在查找“文档已过期”消息。
当我使用POST时,这是否正常?
我现在正在尝试使用GET,但没有任何变化,或者我的GET写错了。
这是一个小模式:
Page 1 -> POST -> Page 2 (wizard) -> POST -> Page 3
当我尝试从第3页回到第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数据生成页面。