会话从所有浏览器/设备注销

时间:2015-11-16 05:15:41

标签: php session cookies logout

我有这个维护用户及其个人资料的网站,一旦用户登录,他就会看到此按钮退出。

<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会破坏会话,并且用户将从其他所有设备中注销,是否需要设置其他设置?还是我错过了什么?

1 个答案:

答案 0 :(得分:1)

如果您使用多个浏览器打开网站,则会为浏览器中的每个请求创建一个新会话,它会创建大量不同的会话。您需要将所有会话用户信息存储在数据库表中的某个位置,同时注销检查用户ID并删除所有会话