我有这个维护用户及其个人资料的网站,一旦用户登录,他就会看到此按钮退出。
<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会破坏会话,并且用户将从其他所有设备中注销,是否需要设置其他设置?还是我错过了什么?
答案 0 :(得分:1)
如果您使用多个浏览器打开网站,则会为浏览器中的每个请求创建一个新会话,它会创建大量不同的会话。您需要将所有会话用户信息存储在数据库表中的某个位置,同时注销检查用户ID并删除所有会话