PHP文档已过期

时间:2012-05-29 08:25:56

标签: php back-button

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

Document Expired
This document is no longer available.

我可以实施哪些代码来迎合这种情况

8 个答案:

答案 0 :(得分:21)

在PHP代码的开头添加

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

答案 1 :(得分:16)

在主页面中设置Cache-Control标题。

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

答案 2 :(得分:15)

使用发布/重定向/获取规则可以避免这种情况。

以下问题会出现此问题:

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

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

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

答案 3 :(得分:2)

去你的服务器的php.ini和 改变这个

session.cache_limiter = nocache

作为

 session.cache_limiter = public

问题将得到解决。我解决了这个问题。

答案 4 :(得分:1)

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

<HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">

答案 5 :(得分:1)

我遇到了同样的问题。我想要回来的页面已经发布了表单的值,所以当我点击Back链接时,它显示了Document Expired错误。见例子 -

有三个页面,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中,因此页面将按预期加载。

答案 6 :(得分:1)

将此行放在您的页面中。

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

答案 7 :(得分:0)

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

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

有两种方法可以轻松克服这个问题而无需任何黑客攻击。

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

如果您确实需要隐藏表单输入,无论出于何种原因并希望使用post方法,那么导致重定向到其他页面的链接/操作会使其重定向到JavaScript。

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

这将删除引荐URL并强制新的http请求。 现在按下浏览器上的后退按钮不会导致文档过期。