如何在Codeigniter中销毁所有异常的会话?

| 在我的代码中,我具有以下注销功能
function logout() 
{
    $this->session->sess_destroy();  

    // but, don\'t destroy this session
    $this->session->userdata(\'admin_id\');
}
如何销毁除“ admin_id”以外的所有会话?
已邀请:
CI中的会话销毁是在下一个请求时执行的,因此您不能销毁会话并在之间没有请求的情况下打开新会话。 但是您可以取消设置所有会话数据,除了要保留的数据和Codeigniter保留会话所需的数据。这取决于会话的配置方式,默认情况下是用户代理,上一个活动和会话ID。请参阅CI-Session类首选项(在页面底部) 此函数删除除admin_id之外的所有会话数据
 $sessionData = $this->session->all_userdata();
 foreach($sessionData as $key =>$val){
    if($key!=\'session_id\' 
       && $key!=\'last_activity\' 
       && $key!=\'ip_address\' 
       && $key!=\'user_agent\' 
       && $key!=\'admin_id\'){
         $this->session->unset_userdata($key);
     }
  }
您可能要临时保存admin_id,并在销毁所有会话变量后将其放回会话。
$temp = $this->session->userdata(\'admin_id\');
$this->session->sess_destroy();
$this->session->set_userdata(\'admin_id\', $temp);
您必须在会话中保存一些密钥,这是正确的代码。
$sess_array = $this->session->all_userdata();
foreach($sess_array as $key =>$val){
   if($key!=\'session_id\'
      && $key!=\'last_activity\'  
      && $key!=\'ip_address\'  
      && $key!=\'user_agent\'  
      && $key!=\'RESERVER_KEY_HERE\')$this->session->unset_userdata($key);
}
这将为您工作:)
$this->session->sess_destroy();
破坏会话的
session_id
last_activity
。因此会话不再存在。所以这行不通。 尝试这个:
$sess_array = $this->session->all_userdata();

foreach($sess_array as $key =>$val){

   if($key!=\'session_id\'||$key!=\'last_activity\'||$key!=\'admin_id\'){
   $this->session->unset_userdata($key);
    }

  }

要回复问题请先登录注册