2015-11-16 6 views
0

У меня есть этот сайт, который поддерживает пользователей и их профили, как только пользователь входит в систему, он видит эту кнопку для выхода из системы.сеанс выхода из всех браузеров/устройств

<a href="<?php echo PSF::urlFor('logout');?>" class="link" id="position">Logout</a> 

это идет в эту функцию

else if($page == 'logout')//when logout occures 
     { 

      PSF::userLogout(true); 


      /** 
      * Need to remove twitter session too. 
      */ 

      if(isset($_SESSION['tw_access_token'])){ 
       unset($_SESSION['tw_access_token']); 
      } 

      PSF::redirectTo('default_home');     
     } 

он регистрирует пользователя, и перенаправляет на главную страницу, и функция PSF :: UserLogout выглядит что-то вроде этого

final static public function userLogout($compleLogout = false) 
    { 

     if (empty(self::$_userStack)) 
     { 
      return false; 
     } 
     if ($compleLogout) 
     { 

      self::$_userStack = array(); 
      self::requestRemoveCookie('PSF_CookieLogin'); 
     } 
     else 
     { 

      array_pop(self::$_userStack); 
     } 

     self::userFlushCache(); 

     return PSF::sessionSet('__PSF_SYSTEM_CurrentUser_Stack', self::$_userStack); 
    } 

он получает текущий пользователь, который использует браузер, и уничтожает их сессию и файлы cookie и успешно их выдает, но только из текущего браузера, если я открываю одну и ту же учетную запись на нескольких браузеры параллельны, он завершает сеанс только в одном браузере и продолжает регистрироваться в другом браузере. Я думал, что удаление сеанса и файлы cookie будут уничтожать сессию повсюду, и пользователь будет выходить из любого другого устройства, есть ли какой-либо дополнительный параметр, который мне нужно установить? или я что-то пропустил?

+4

Новый сеанс создается для каждого запроса из браузера, если вы используете несколько браузеров для открытия сайта, он создаст этот много разных сеансов. Вам нужно сохранить всю информацию о пользователе сеанса где-то в таблице базы данных, а во время выхода из системы проверить идентификатор пользователя и удалить все сеансы –

+2

Различные устройства и браузеры не используют сеансы. Единственный способ, с помощью которого я могу думать о своей голове, состоять в том, чтобы сохранить состояние входа в базу данных, которую каждое устройство может проверить. – Rasclatt

ответ

1

Новый сеанс создается для каждого запроса из браузера, если вы используете несколько браузеров для открытия сайта, это создаст большую часть разных сеансов. Вам нужно сохранить всю информацию о пользователе сеанса где-то в таблице базы данных, а во время выхода из системы проверить идентификатор пользователя и удалить все сеансы

Смежные вопросы