我无法使用codeigniter
退出我的应用程序我的代码如下:
public function logout()
{
$sess = $this->CI->session->all_userdata();
$this->CI->session->unset_userdata($sess["session_id"]);
$this->CI->session->unset_userdata($sess["ip_address"]);
$this->CI->session->unset_userdata($sess["user_agent"]);
$this->CI->session->unset_userdata($sess["last_activity"]);
$this->CI->session->sess_destroy();
return true;
}
我在login
控制器上调用此函数
public function __construct()
{
parent::__construct();
$this->load->Helper("password");
$this->auth->logout();
var_dump($this->auth->is_loggedin());
}
var_dump始终为bool(true)
。我怎么解决这个问题?
答案 0 :(得分:2)
我认为问题在于,即使您已调用sess_destroy
,当前页面构建的其余部分也存在会话。如果你试试这会怎么样?
public function logout()
{
//No need to unset individual items just call sess_destroy
$this->CI->session->sess_destroy();
return true;
}
然后在调用logout
函数后执行重定向
public function __construct()
{
parent::__construct();
$this->load->Helper("password");
$this->auth->logout();
redirect('/test/', 'refresh');
}
答案 1 :(得分:0)
不要使用会话数据的值,而是尝试使用密钥本身。像这样:
public function logout()
{
$this->CI->session->unset_userdata("session_id");
$this->CI->session->unset_userdata("ip_address");
$this->CI->session->unset_userdata("user_agent");
$this->CI->session->unset_userdata("last_activity");
$this->CI->session->sess_destroy();
return true;
}