【问题标题】:"Webpage has expired" $_SESSIONS in PHPPHP 中的“网页已过期”$_SESSIONS
【发布时间】:2009-04-27 17:25:12
【问题描述】:

在我的网络应用程序中,我使用的是$_SESSIONS,但有时,当用户按下退格键时,他会得到:

网页已过期

消息。

为什么会这样?我该怎么做才能避免这种情况?

【问题讨论】:

    标签: php session


    【解决方案1】:

    这与$_SESSION 变量无关,它与您使用POST 方法在页面之间传输信息有关。如果你想避免它,你需要使用 GET 方法而不是 POST。

    【讨论】:

    • 另外,据我所知,这只是 IE 显示的内容。
    • Firefox 会显示一个对话框,通知您需要重新发送信息才能查看此页面(或类似内容),并提供重新发送或取消选项。
    • 您不应盲目地将 POST 请求替换为 GET 请求。 tools.ietf.org/html/rfc2616#section-9.1.1 :“特别是,已经建立了约定,即 GET 和 HEAD 方法不应具有采取除检索之外的操作的意义。”
    • 附带说明,为避免这种情况,一旦完成 POST 处理,请重定向到另一个页面。
    • 好吧,你不应该盲目地这样做,但他没有提供任何关于什么功能实际导致这种情况的细节。我们不能真正假设用 GET 替换它是一个好主意或坏主意。如果它是用户经常尝试“返回”的东西,我的猜测是它类似于搜索结果。这就是为什么我继续建议用 GET 替换。除非他告诉我们,否则我们真的无法知道。
    【解决方案2】:

    它还与发送到浏览器的缓存控制指令有关。 查看http://de.php.net/manual/en/session.configuration.php#ini.session.cache-limiterhttp://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 的中间处理页面。

    【讨论】:

      【解决方案3】:

      就像 Chad 所说,这是返回到 POST 请求结果的页面的结果。就像 cmets 说的那样,您不能只用 GET 替换 POST,因为出于各种原因,这是一个坏主意。

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

      【讨论】:

        猜你喜欢
        • 2013-04-02
        • 1970-01-01
        • 1970-01-01
        • 2011-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多