PHP:返回上一页,已加载HTTP POST

时间:2019-01-10 16:54:01

标签: php http post browser back

我有一个PHP应用程序,其页面的表单可以搜索数据。当我单击“搜索”按钮时,使用HTTP POST方法到同一页面的摘要。此时,我单击结果列表中的一项,然后转到另一页。如果单击新页面上的浏览器后退按钮,则会收到“文档过期”错误。为什么?我该如何解决这个问题?

以下是示意图:

页面A-> HTTP发布提交到页面A->页面B->返回页面A->错误

谢谢。

1 个答案:

答案 0 :(得分:1)

基本上,您不希望用户在POST数据到html页面时完成请求。您应该将他们重定向到GET页,因此他们的浏览器会将其视为他们的最后一个已知位置,因为重定向在浏览器中被视为整体请求的一部分。

// receive $_POST
// ... do work ...
// success!
header('Location: /wherever', true, 302);

Found方法通常用于此目的,它使您可以从一个动词移至下一个动词(尽管其他动词也经常使用,例如303,但是...是的,仅使用302)< / p>

这应该可以解决您的问题!


侧面说明::这种特殊的用例是Flash会话之类的东西特别有用的地方。您希望数据跟随它们到重定向页面,因此您可以说“哦,您已登录!”管他呢。这是他们的目的。有几种方法可以给野兽蒙皮,但我只是想让你知道。


旁注++ :其他用户已提及它,但值得重申。上面的方法可以解决您的问题时,搜索表单的标准约定是使用GET

<form method="get" action="/search">
    <input name="q">
    <button type="submit">Search</button>
</form>

之所以这样做是出于几个原因,但是具体来说,搜索结果是可索引的,可书签的和可共享的。

POST通常保留用于大块数据或敏感数据类型。还有更多用例,例如REST动词等,但是我已经简化了这一点。

至此,请确保您urldecode($_GET)您的数据。