0

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

当我使用 POST 时,这不是正常的事情吗?

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

这是一个小架构:

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

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

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

4

2 回答 2

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 作为 POST 响应。

于 2012-07-11T07:10:06.873 回答
1

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

于 2012-07-11T07:03:03.860 回答