Php 注销时会话未被破坏?
我正在开发一个codeigniter网站,它与一个核心php网站集成。问题是,当我注销会话未被破坏或取消设置时,如果用户单击“上一步”按钮,他/她可以返回内部页面,而且它也不允许其他用户登录,因为会话已在运行 我已经尝试过使用corephp取消和破坏会话,但没有成功,请提供一些建议 这是我的注销代码Php 注销时会话未被破坏?,php,codeigniter,Php,Codeigniter,我正在开发一个codeigniter网站,它与一个核心php网站集成。问题是,当我注销会话未被破坏或取消设置时,如果用户单击“上一步”按钮,他/她可以返回内部页面,而且它也不允许其他用户登录,因为会话已在运行 我已经尝试过使用corephp取消和破坏会话,但没有成功,请提供一些建议 这是我的注销代码 function logout() { session_start(); $this->session->set_userdata('user_
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');
}
编辑:它可以在专用浏览器上工作,但不能在普通浏览器上工作使用codeigniter会话库
function logout(){
$this->session->sess_destroy();
redirect('/');
}
确保已在此控制器中加载会话库(或自动加载)
另外,您可以像下面这样取消设置会话中的各个项目,而不是在会话中设置空白的userdata
$this->session->unset_userdata('user_id');
使用codeigniter会话库,它应该像
function logout(){
$this->session->sess_destroy();
redirect('/');
}
确保已在此控制器中加载会话库(或自动加载)
另外,您可以像下面这样取消设置会话中的各个项目,而不是在会话中设置空白的userdata
$this->session->unset_userdata('user_id');
试试这个
$array = ('user_id', 'user_name', 'business_id', 'email', 'user_type', 'activation_status');
$this->session->unset_userdata($array);
试试这个
$array = ('user_id', 'user_name', 'business_id', 'email', 'user_type', 'activation_status');
$this->session->unset_userdata($array);
在
取消设置($\u会话)
之前,请尝试打印$this->SESSION
。它显示了什么?我不知道codeigniter中确切的函数销毁会话是什么,但我认为这是可以的:-函数注销(){$this->session->sess_destroy();session_destroy();header('location:'.base_url().'Login');}
您只需要$this->session session sess_destroy()代码>注释掉所有剩余的内容,看看是否有效,也不需要会话\u start()
。最初它只有$this->session->sess\u destroy();但是它与一个核心php站点集成在一起,这是主站点,这就是为什么我要应用session_destroy();但是它仍然不工作在取消设置($\u会话)
尝试打印$this->SESSION
之前,application/config/config.php$config['sess\u use\u database']中的配置是什么。它显示了什么?我不知道codeigniter中确切的函数销毁会话是什么,但我认为这是可以的:-函数注销(){$this->session->sess_destroy();session_destroy();header('location:'.base_url().'Login');}
您只需要$this->session session sess_destroy()代码>注释掉所有剩余的内容,看看是否有效,也不需要会话\u start()
。最初它只有$this->session->sess\u destroy();但是它与一个核心php站点集成在一起,这是主站点,这就是为什么我要应用session_destroy();但是它仍然不工作你在application/config/config.php$config['sess_use_database']中的配置是什么尝试了不工作,我们得到的sesson也来自主要的核心php站点,这就是为什么我应用了它但不工作你需要打印$this->session对象并检查它。可能您正在重定向页面上创建另一个会话。它会给出一个未定义变量的通知:_session,但如果我转到上一页,数据仍将显示在会话中。如果您在上面评论您也在使用核心php站点?在这种情况下,您需要先检查第一个会话,然后销毁该会话。我正在销毁核心php会话,但没有帮助。尝试了该操作后,我们得到的sesson也来自主要的核心php站点,这就是为什么我应用了该操作,但不工作。您需要打印$this->session对象并进行检查。可能您正在重定向页面上创建另一个会话。它会给出一个未定义变量的通知:_session,但如果我转到上一页,数据仍将显示在会话中。如果您在上面评论您也在使用核心php站点?在这种情况下,您需要检查第一个会话,然后销毁该会话。我正在销毁核心php会话,但没有帮助。请解释它与我上面所做的有什么不同?请解释它与我上面所做的有什么不同?