&引用;“网页已过期”$_PHP中的会话

&引用;“网页已过期”$_PHP中的会话,php,session,Php,Session,在我的web应用程序中,我使用的是$\u会话,但有时,当用户点击退格键时,他会得到: 网页已过期 信息 为什么会这样?我能做些什么来避免这种情况?这与$\u SESSION变量无关,它与使用POST方法在页面之间传输信息有关。如果要避免这种情况,需要使用GET方法而不是POST。它还与发送到浏览器的缓存控制指令有关。 查看并了解有关缓存设置的更多信息 :重述 要避免“页面已过期”警告,请将session.cache\u limiter设置为private,并确保使用POST方法的任何表单都提交到

在我的web应用程序中,我使用的是
$\u会话
,但有时,当用户点击退格键时,他会得到:

网页已过期

信息


为什么会这样?我能做些什么来避免这种情况?

这与
$\u SESSION
变量无关,它与使用POST方法在页面之间传输信息有关。如果要避免这种情况,需要使用GET方法而不是POST。

它还与发送到浏览器的缓存控制指令有关。 查看并了解有关缓存设置的更多信息

:重述


要避免“页面已过期”警告,请将session.cache\u limiter设置为private,并确保使用POST方法的任何表单都提交到一个中间处理页面,该页面将用户重定向到另一个URL。

正如Chad所说,这是返回到POST请求结果页面的结果。正如评论所说,你不能用GET来代替帖子,因为这是一个坏主意,原因很多


但是,您可以将两者结合起来:让请求成为POST,但发出位置头重定向,然后浏览器将作为GET执行。对于用户来说,这看起来像是一个单独的操作,但对于浏览器来说,这将是一个POST,然后是GET,这有效地消除了这个问题。

而且,据我所知,这只是IE显示的内容。Firefox会显示一个对话框,通知您需要重新发送信息以查看此页面(或类似的内容)具有重新发送或取消选项。您不应盲目地将POST请求替换为GET请求:“特别是,已经建立了一个惯例,即GET和HEAD方法不应该具有除检索以外的其他操作的意义。”作为补充说明,为了避免这种情况,一旦完成后处理,就重定向到另一个页面。好吧,你不应该盲目地这样做,但他没有提供任何细节,说明到底是什么功能导致了这种情况。我们不能真的认为用GET替换它是好主意还是坏主意。如果这是用户经常试图“返回”的东西,我猜这是类似于搜索结果的东西。这就是为什么我继续建议用GET替换。除非他告诉我们,否则我们真的不知道。