Как уничтожить все сеансы с исключительным в Codeigniter? - PullRequest
1 голос
/ 19 апреля 2011

В моем коде у меня есть функция выхода из системы, как показано ниже

function logout() 
{
    $this->session->sess_destroy();  

    // but, don't destroy this session
    $this->session->userdata('admin_id');
}

Как уничтожить всю сессию, кроме 'admin_id'?

Ответы [ 4 ]

3 голосов
/ 16 мая 2014

Уничтожение сеанса в CI выполняется при следующем запросе, поэтому вы не можете уничтожить сеанс и открыть новый сеанс без промежуточного запроса.

Но вы можете сбросить все данные сеанса, кроме данныхВы хотели бы сохранить и данные Codeigniter должны сохранить сеанс.Это зависит от того, как настроен сеанс, по умолчанию это пользовательский агент, последнее действие и идентификатор сеанса.См. CI-Session class предпочтения (внизу страницы)

Эта функция удаляет все данные сеанса, кроме 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);
     }
  }
2 голосов
/ 19 апреля 2011

Возможно, вы захотите временно сохранить admin_id и просто вернуть его в сессию после того, как вы уничтожили все свои сессионные переменные.

$temp = $this->session->userdata('admin_id');
$this->session->sess_destroy();
$this->session->set_userdata('admin_id', $temp);
1 голос
/ 15 мая 2014

Вы должны сохранить некоторые ключи в сеансе, вот правильный код.

$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);
}

Это будет работать для вас:)

0 голосов
/ 20 апреля 2013

$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);
    }

  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...