鍍金池/ 問(wèn)答/PHP/ 如何設(shè)計(jì)一個(gè)帳戶只能一個(gè)終端登陸?

如何設(shè)計(jì)一個(gè)帳戶只能一個(gè)終端登陸?

如題:
我自己的邏輯:
1.在用戶表中新增一個(gè)字段 is_online(是否已登陸 0 未登陸 1登陸)
2.登陸時(shí)判斷此字段是否為1 ,退出時(shí),更新此字段為0

如果用戶非正常退出的情況 (關(guān)閉瀏覽器等) 這個(gè)情況就會(huì)沒(méi)辦法更新is_online字段

目前想到一個(gè)方法:但是沒(méi)有完全理解

就是將session_id存入數(shù)據(jù)庫(kù) 登陸時(shí)判斷數(shù)據(jù)庫(kù)中的session_id 在服務(wù)器中是否存在?

這個(gè)具體如何操作 請(qǐng)教一下

回答
編輯回答
孤星
2018年6月13日 01:38
編輯回答
哚蕾咪
2017年7月18日 02:39
編輯回答
孤巷

我們網(wǎng)站是用的memcache共享session做到的

2018年2月13日 11:17
編輯回答
朕略傻

每次登錄都生成一個(gè)用戶user_id與相對(duì)的token,保存到數(shù)據(jù)庫(kù)里。每次接口請(qǐng)求之前判斷這個(gè)token是否有效,重新登錄后token發(fā)生變化,之前登錄的token驗(yàn)證就失效了,從而實(shí)現(xiàn)一個(gè)帳戶只能一個(gè)終端登陸。

2017年11月1日 09:37
編輯回答
拮據(jù)

每次登陸后生成一個(gè)有時(shí)效token,保存在服務(wù)器端和客戶端,每次鑒權(quán)時(shí)只驗(yàn)證這個(gè)token
這樣新的登錄事件發(fā)生后,由于token改變,以前的有效登錄就自動(dòng)失效了

2018年9月15日 08:31
編輯回答
茍活

登陸時(shí),將session_id存入數(shù)據(jù)庫(kù) 鑒權(quán)時(shí)判斷 數(shù)據(jù)庫(kù)中的session_id在服務(wù)器中是否還存在

通過(guò)session_save_path()獲取session_id在服務(wù)器中的目錄路徑

//判斷數(shù)據(jù)庫(kù)中用戶是否登陸
if($admin['is_online']) {
    //如果用戶非正常退出時(shí), 判斷session_id是否存在 如果存在 提示已經(jīng)登陸 ( session默認(rèn)30分鐘失效)
    if(file_exists(session_save_path().'\\'.$admin['session_id'])) {
        ajaxmsg('此賬號(hào)已在其它地方登陸,請(qǐng)先退出后再登陸',0);
    }
}
2017年12月2日 08:10