先上圖,看個大概:
一般的原則就是,後一個用戶登錄時會把前一個用戶踢下線。
在用戶首次登錄時,我們會把用戶的sessionid保存到數據庫,這個是用戶的唯一標識。方便後邊操作。
用戶只有在登錄時才會和數據庫中的phpsessid進行對比,如果不同,則更新數據庫中的phpsessionid為當前浏覽器的phpsessionid,這樣後登錄的用戶就把前邊登錄的用戶給踢下線了。
但是前邊的用戶怎麼知道自己被踢下線了?
我使用的Yii框架,在YII框架中有一個filters()這樣一個方法。在每個控制器中都存在該方法,我們可以在這個方法中,讓當前用戶的phpsessionid與數據庫中的phpsessionid進行驗證,當發現phpsessionid不同時,我們就清除當前浏覽器的phpsessionid,並退出網站,提醒用戶當前帳號在其他地方登陸。
來自何問起