CodeIgniter不会取消设置会话

时间:2014-03-09 09:17:39

标签: php codeigniter session

我无法使用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)。我怎么解决这个问题?

2 个答案:

答案 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;
}