【问题标题】:Logout issue in CodeIgniterCodeIgniter 中的注销问题
【发布时间】:2014-06-12 18:25:21
【问题描述】:

我在退出 CI 框架时遇到问题。当我注销并按 backspace 按钮时,它将带我进入登录页面。

注销后我需要手动刷新以销毁会话。

如果有人知道,请帮助我。

这是注销代码:

function logout() {
        //pr($this->session->userdata[$this->section_name]);
        //exit;
        $lng = (isset($this->session->userdata[$this->section_name]['site_lang_code']) && $this->session->userdata[$this->section_name]['site_lang_code'] != "") ? $this->session->userdata[$this->section_name]['site_lang_code'] : 'es';

        if (isset($this->session->userdata[$this->section_name]['social_login']) && $this->session->userdata[$this->section_name]['social_login'] == 1) {
            $this->SocialLogout($this->session->userdata[$this->section_name]['socialgateway']);
        }
        $this->session->unset_userdata($this->section_name);

        redirect(site_url($lng));
        exit;
    }

【问题讨论】:

  • 您能显示您在登录时设置的会话以及在注销时执行的操作吗?
  • @RakeshSharma 添加注销代码。
  • 在未设置会话后尝试打印会话是否仍然存在
  • 为什么需要删除缓存或需要标头尝试重定向(site_url($lng), 'refresh');

标签: php codeigniter session cookies


【解决方案1】:

这必须是带有缓存控制的东西,意思是浏览器缓存。我认为重定向没有帮助。如果需要任何缓存,您应该禁用它并使用 CodeIgniters 缓存库。

在需要用户登录的页面中添加以下内容:

//Prevent browsers from using history to browse in the user system.

$this->CI->output->set_header("Cache-Control: no-store, no-cache, must-revalidate");
$this->CI->output->set_header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
$this->CI->output->set_header("Pragma: no-cache"); 

当在浏览器中按下返回时,页面将被刷新。

【讨论】:

  • 我应该在控制器的构造函数中添加这个吗??
【解决方案2】:
$this->session->sess_destroy();
redirect("controller/");

【讨论】:

    【解决方案3】:

    注销后使用redirect()进入主页面!

    $this->session->unset_userdata('login');
    redirect('mainController/index', 'refresh');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-01
      • 2011-05-24
      • 2015-01-04
      • 2016-05-20
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多