【问题标题】:logout feature in code ignitercodeigniter 中的注销功能
【发布时间】:2011-07-29 12:42:32
【问题描述】:

我开始在我的项目中使用 codeigniter。我的网站有用户身份验证系统。我已经看过 nettuts 的视频以获取登录信息。我很困惑为什么注销无法正常工作。

我的登录控制器中有以下注销功能。

function logout() {
        $this->session->sess_destroy();
        redirect('main');
    }

如果我单击注销按钮,我会将用户重定向到主页。但是在将用户重定向到主页后,如果单击浏览器上的后退按钮,我将在页面顶部看到注销和我的名字。我需要一些关于哪里出错的帮助,或者我的控制器中是否缺少任何重要的代码

提前致谢

编辑

我想我找到了解决方案。我应该将以下代码附加到适当的控制器中

$this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate, no-transform, max-age=0, post-check=0, pre-check=0");
$this->output->set_header("Pragma: no-cache"); 

【问题讨论】:

    标签: php codeigniter logout


    【解决方案1】:

    我认为这是浏览器缓存问题。如果您单击返回,您实际上会看到缓存页面,即您登录时的样子。

    在回到退出前页面后尝试按 F5。它现在应该显示您已注销。

    【讨论】:

    • 是的,你是对的。这不是安全漏洞吗。当我点击注销时,虽然我点击了后退按钮,但我认为我的代码不应该让用户看到缓存页面,我也相信。如果用户在退出前已经看到了一些重要信息,如果一些用户点击了后面的页面,他将看到最后浏览的页面。如何摆脱这个问题。
    • 您可以尝试在所有登录页面上不放置缓存标头,这是我目前能想到的唯一解决方案...实际上大多数网站似乎都有这个问题,包括这个。
    • 将@amit 的建议整合到您的答案中?
    • 将@amit 的建议整合到您的答案中?
    【解决方案2】:

    向我的主构造函数添加标题解决了我的 IE7 问题:

    $this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate, no-transform, max-age=0, post-check=0, pre-check=0");
    $this->output->set_header("Pragma: no-cache"); 
    

    【讨论】:

      猜你喜欢
      • 2013-05-10
      • 2023-04-02
      • 2017-09-22
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-11
      相关资源
      最近更新 更多