2015-11-16 66 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); 
    } 

是越來越當前正在使用瀏覽器的用戶,並破壞他們的會話和cookies併成功註銷它,但僅從當前瀏覽器中,如果我打開多個帳戶瀏覽器並行,它只能在一個瀏覽器上結束會話,並繼續在另一個瀏覽器上登錄。我認爲刪除會話和cookie會破壞會議無處不在,用戶將被註銷每個其他設備,是否有任何額外的設置,我需要設置?或者我錯過了什麼?

+4

如果您使用多個瀏覽器打開網站,將爲每個來自瀏覽器的請求創建一個新會話,很多不同的會議。 您需要將所有會話用戶信息存儲在數據庫表的某個位置,同時註銷時檢查用戶標識並刪除所有會話 –

+2

不同設備和瀏覽器不共享會話。我能想到的唯一辦法就是將登錄狀態保存在每個設備可以檢查的數據庫中。 – Rasclatt

回答

1

如果您使用多個瀏覽器打開網站,則會爲來自瀏覽器的每個請求創建一個新會話,它將創建大量不同的會話。您需要將所有會話用戶信息存儲在數據庫表中的某個位置,同時註銷時檢查用戶標識並刪除所有會話