【问题标题】:PHP Document ExpiredPHP 文档已过期
【发布时间】:2012-05-29 08:25:56
【问题描述】:

我在做一些 PHP 编码,如果在浏览器上按下“返回”按钮,我会收到以下错误:

Document Expired
This document is no longer available.

我可以实现什么代码来适应这种情况

【问题讨论】:

  • 您使用 POST 进行搜索吗?简单的答案:不要。
  • 您是否尝试提交表单,然后在按下返回按钮一段时间后?
  • 在没有代码、没有方法的情况下,您希望我们如何帮助您?

标签: php back-button


【解决方案1】:

在 PHP 代码的开头添加这个

ini_set('session.cache_limiter','public');
session_cache_limiter(false);

【讨论】:

  • 超级容易解决一个相对复杂和麻烦的问题,谢谢!
【解决方案2】:

只需将这一行放在您的页面中即可。

<?php 
header("Cache-Control: max-age=300, must-revalidate"); 
?>

【讨论】:

  • 在构建 html 标头之前放入 php 时,这对我的托管帐户有效。
【解决方案3】:

在主页中设置 Cache-Control 标头。

<?php
header('Cache-Control: max-age=900');
?>

【讨论】:

  • 这对我不起作用,但下面@tazo todua 提供的解决方案可以。
【解决方案4】:

使用 Post/Redirect/Get 规则可以避免这种情况。

此问题将由以下原因引起:

  • 假设我有example1.phpexample2.phpexample3.php
  • 我发布了一些从 example1.phpexample2.php 的值,然后我根据需要完成了所有数据库内容并渲染了页面(未重定向 - 刚刚发布并渲染了页面)。
  • 之后,我将页面从example2.php 重定向到example3.php。 现在,如果您点击浏览器返回 文档将过期

为避免这种情况,我们可以将 example1.php 中的值发布到 example2.php 并立即将用户重定向到其他页面。

这是Post/Redirect/Get 模式,可以遵循它来避免文档过期。它还有助于避免 DB 中的冗余条目。

【讨论】:

    【解决方案5】:

    转到服务器的 php.ini 和 改变这个

    session.cache_limiter = nocache
    

    作为

     session.cache_limiter = public
    

    问题就解决了。我用这个解决了我的问题。

    【讨论】:

      【解决方案6】:

      检查是否在标头上禁用了缓存,例如

      &lt;HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"&gt;

      【讨论】:

      • 好的,如果是,我该怎么办?
      • 你必须删除它。这应该启用缓存。
      【解决方案7】:

      我也遇到过同样的问题。我想返回的页面已发布表单值,因此当我点击返回链接时,它显示文档过期错误。见例子-

      共有三个页面,page1.php、page2.php和page3.php。现在我正在使用 POST 方法从 page1.php 向 page2.php 提交一些表单。从 page2.php 我点击了 page3.php 的一些链接。

      现在我想从 page3.php 回到 page2.php。但是 page2.php 有使用 POST 方法发布的表单值,当我从 page3.php 进入 page2.php 时,浏览器显示错误“Docuemnt Expired”。

      所以我使用 GET 方法而不是 POST。因此,当返回 page2.php 时,将不会有表单的 POST 值,并且页面将正确加载。此外,由于 URL 中存在表单值,因此页面将按预期加载。

      【讨论】:

        【解决方案8】:

        以下两种情况会出现这个问题:

        • 使用Post 实现搜索
        • 重定向回之前发布的页面。

        有 2 种方法可以轻松解决此问题,无需任何 hack。

        对于search form,不要使用post 方法,而是使用get 方法,一切正常。

        如果您出于某种原因确实需要隐藏表单输入并想使用 post 方法,那么导致重定向到其他页面的链接/动作,通过 JavaScript 使其重定向。

        location.replace('http://example.com/page2');
        

        这会删除推荐 URL 并强制执行新的 http 请求。 现在在浏览器上按返回按钮不会导致文档过期。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-28
          • 2023-03-15
          相关资源
          最近更新 更多