【发布时间】:2009-04-27 17:25:12
【问题描述】:
在我的网络应用程序中,我使用的是$_SESSIONS,但有时,当用户按下退格键时,他会得到:
网页已过期
消息。
为什么会这样?我该怎么做才能避免这种情况?
【问题讨论】:
在我的网络应用程序中,我使用的是$_SESSIONS,但有时,当用户按下退格键时,他会得到:
网页已过期
消息。
为什么会这样?我该怎么做才能避免这种情况?
【问题讨论】:
这与$_SESSION 变量无关,它与您使用POST 方法在页面之间传输信息有关。如果你想避免它,你需要使用 GET 方法而不是 POST。
【讨论】:
它还与发送到浏览器的缓存控制指令有关。 查看http://de.php.net/manual/en/session.configuration.php#ini.session.cache-limiter 和http://shiflett.org/articles/how-to-avoid-page-has-expired-warnings 了解有关缓存设置的更多信息。
http://shiflett.org/articles/how-to-avoid-page-has-expired-warnings:
回顾为避免“页面已过期”警告,请将 session.cache_limiter 设置为私有,并确保使用 POST 方法的任何表单提交到将用户重定向到不同 URL 的中间处理页面。
【讨论】:
就像 Chad 所说,这是返回到 POST 请求结果的页面的结果。就像 cmets 说的那样,您不能只用 GET 替换 POST,因为出于各种原因,这是一个坏主意。
但是,您可以将两者结合起来:让请求为 POST,但发出 Location 标头重定向,然后浏览器将作为 GET 执行。对用户来说,这看起来像是一个单一的操作,但对浏览器来说,这将是一个 POST 后跟一个 GET,这有效地消除了这个问题。
【讨论】: