【问题标题】:PHP Codeigniter is showing the cache when i press the back button after I logout当我注销后按后退按钮时,PHP Codeigniter 显示缓存
【发布时间】:2012-07-31 17:05:45
【问题描述】:

从我的应用程序中注销后,当我按下返回按钮时,用户的所有登录选项仍会显示在页面上。

登录后,当我按下返回按钮时,它将显示页面的注销版本。

我尝试在我的注销控制器中设置它

function logout() {
    $this->output->set_header('cache-Control: no-store, no-cache, must-revalidate');
    $this->output->set_header("cache-Control: post-check=0, pre-check=0", false);
    $this->output->set_header("Pragma: no-cache");
    $this->output->set_header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
    $this->tank_auth->logout();
    redirect(subdomain() . 'home');
}

但是当我按下后退按钮时缓存仍然存在。我该如何解决这个问题?

-----更新-----

我认为这里的缓存不是问题,我在开发人员设置中禁用了 chrome 中的缓存,但是当我按下后退按钮时,我的浏览器在注销后仍会进入安全页面。

所以缓存不是问题..

【问题讨论】:

  • 我找不到来源,所以我可能错了,但如果我没记错的话,有一个问题/错误,即缓存控制标头没有通过输出类正确发送并使用标准 @987654322 @函数解决了这个问题。
  • 这与缓存无关 - 在大多数浏览器中,后退按钮不会刷新页面,它只是显示历史记录中的页面。
  • 你好,我尝试在 facebook 中注销并按下后退按钮,它显示了主要的注册 facebook 页面。如果 Facebook 只显示您历史记录中的页面,它是如何做到这一点的?
  • ben:我尝试使用 header 功能但仍然没有运气..
  • 您找到任何解决方案了吗?

标签: php codeigniter session caching


【解决方案1】:

您好抱歉说缓存不是问题。缓存是个问题!我通过将此代码放入 codeigniter 的 index.php 文件来解决此问题。

header("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");

【讨论】:

  • 最好的方法是拥有一个基本控制器(MY_Controller 扩展 CI_Controller)并在 MY_Controller 的构造函数中添加 $this->output->set_header。然后 anycontroller 扩展 MY_Controller
【解决方案2】:

只需将其添加到您的控制器中

 public function __construct()
      {
          parent::__construct();

           $this->output->set_header('Last-Modified:'.gmdate('D, d M Y H:i:s').'GMT');
           $this->output->set_header('Cache-Control: no-store, no-cache, must-revalidate');
           $this->output->set_header('Cache-Control: post-check=0, pre-check=0',false);
           $this->output->set_header('Pragma: no-cache');
    }

【讨论】:

    【解决方案3】:

    阅读这篇我认为它对你很有用

    https://www.codeigniter.com/user_guide/libraries/caching.html

    https://www.codeigniter.com/user_guide/database/caching.html

    试试这个

    $this->cache->clean();
    

    $this->db->cache_delete_all();
    

    【讨论】:

    • 我认为缓存不是这里的问题,我在开发人员设置中禁用了 chrome 中的缓存,但是当我按下后退按钮时,我的浏览器在注销后仍会进入安全页面。所以缓存不是问题。
    猜你喜欢
    • 2012-05-12
    • 2012-05-07
    • 2014-08-14
    • 2017-01-18
    • 2011-08-05
    • 2013-12-11
    • 2012-05-01
    • 2014-05-13
    • 2015-07-11
    相关资源
    最近更新 更多