【问题标题】:Session not getting destroyed on logout?会话在注销时没有被破坏?
【发布时间】:2016-11-17 09:52:16
【问题描述】:

我正在开发一个与核心 php 网站集成的 codeigniter 网站。问题是当我注销会话没有被破坏或取消设置时,如果用户单击返回按钮,他/她可以返回内部页面,也不允许其他用户登录,因为会话已经在运行。

我已经尝试使用 corephp 取消设置和销毁会话,但没有成功,请提出一些建议。

这是我的登出代码

        function logout()
    {
    session_start();

    $this->session->set_userdata('user_id','');
    $this->session->set_userdata('user_name','');
    $this->session->set_userdata('business_id','');
    $this->session->set_userdata('email','');
    $this->session->set_userdata('user_type','');
    $this->session->set_userdata('activation_status','');
    unset($_SESSION); 
    $this->session->sess_destroy();
      session_destroy();
    header('location:'.base_url().'Login');


     }

编辑:它适用于私人浏览器,但不适用于普通浏览器

【问题讨论】:

  • unset($_SESSION) 之前尝试打印$this->session。它显示什么?
  • 我不知道在 codeigniter 中破坏会话的确切功能是什么,但我认为这还可以:- function logout(){ $this->session->sess_destroy(); session_destroy(); header('location:'.base_url().'Login'); }
  • 你只需要$this->session->sess_destroy();把其余的注释掉,看看是否有效,也不需要session_start()
  • 最初只是 $this->session->sess_destroy();但它与一个核心 php 站点集成,这是主站点,这就是我应用 session_destroy() 的原因;但它仍然无法正常工作
  • 你在 application/config/config.php $config['sess_use_database'] 中的配置是什么

标签: php codeigniter


【解决方案1】:
Try something like this

$data = array(
'user_id' => '',
'user_name' => '',
'business_id' => '',
'email' => '',
'user_type' => '',
'activation_status' => '',    
);

$this->session->set_userdata('my_session',$data);

To Destroy Session

$this->session->sess_destroy('my_session');

【讨论】:

  • 请解释一下它与我上面所做的有什么不同?
【解决方案2】:

使用 codeigniter 会话库应该很简单

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

确保您已在此控制器中加载(或自动加载)会话库

$this->load->library('session');

除了在会话中设置空白用户数据之外,您还可以像这样取消设置会话中的单个项目

$this->session->unset_userdata('user_id');

【讨论】:

    【解决方案3】:

    试试这个

        $array = ('user_id', 'user_name', 'business_id', 'email', 'user_type', 'activation_status');
        $this->session->unset_userdata($array);
    

    【讨论】:

    • 试过不行,我们得到的 sesson 也来自主要的核心 php 站点,这就是为什么我应用了它但没有工作
    • 你需要打印 $this->session 对象并检查它。您可能正在重定向页面上创建另一个会话。
    • 通知未定义变量:_SESSION,但如果我转到上一页,数据仍将显示在会话中
    • 正如您在上面评论的那样,您也在使用核心 php 站点?在这种情况下,您需要检查第一个会话,然后销毁该会话。
    • 我正在破坏核心 php 会话但没有帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-11-25
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    相关资源
    最近更新 更多