代码之家  ›  专栏  ›  技术社区  ›  iamdash

页面过期-php/cakephp和Internet Explorer

  •  3
  • iamdash  · 技术社区  · 14 年前

    我在我的网站上有一个搜索框,用户在其中输入一个词并显示结果。当他们单击其中一个结果(产品)时,他们将进入产品页面。当他们点击后退按钮时,会显示一条“警告:此页面已过期”消息。

    我在Apache上使用cakephp,有人建议我需要更改session.cache_控件?我试过在htaccess中将其更改为private,但似乎没有帮助。

    任何帮助都非常感谢。

    干杯, D

    2 回复  |  直到 14 年前
        1
  •  2
  •   symcbean    14 年前

    这与cakephp和session无关。事实上,这个问题出现在所有Web编程语言中。

    解决方案是使搜索结果页可缓存-我可以想象,您不会每5分钟更新一次目录?

    要使其可缓存,您需要确保使用get而不是post发送搜索词,然后设置正确的头以便浏览器缓存页面,例如。

     header('Cache-Control: max-age=360'); // allows browser to keep for 1 hour
    

    ….如果您使用的会话可能会限制搜索中某些产品的可见性:

     header('Varies: Cookie');
    

    C.

        2
  •  0
  •   deizel. user4815162342    14 年前

    您也可以使用 Post/Redirect/Get design pattern 避免这种情况的模式。例如:

    function index($searchTerms = null) {
        if (isset($this->data['Model']['search_terms'])) {
            $this->redirect(array($this->data['Model']['search_terms']));
        }
        // your normal code here.
    }
    

    这将导致如下URL /controller/action/search+terms 而不是 /controller/action?search_terms=search+terms 和搜索词将作为参数传递给操作(即 $searchTerms 在这种情况下)。