У меня есть этот сайт, который поддерживает пользователей и их профили, как только пользователь входит в систему, он видит эту кнопку для выхода из системы.сеанс выхода из всех браузеров/устройств
<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 будут уничтожать сессию повсюду, и пользователь будет выходить из любого другого устройства, есть ли какой-либо дополнительный параметр, который мне нужно установить? или я что-то пропустил?
Новый сеанс создается для каждого запроса из браузера, если вы используете несколько браузеров для открытия сайта, он создаст этот много разных сеансов. Вам нужно сохранить всю информацию о пользователе сеанса где-то в таблице базы данных, а во время выхода из системы проверить идентификатор пользователя и удалить все сеансы –
Различные устройства и браузеры не используют сеансы. Единственный способ, с помощью которого я могу думать о своей голове, состоять в том, чтобы сохранить состояние входа в базу данных, которую каждое устройство может проверить. – Rasclatt