PHP實現同乙個帳號不允許多人同時重複登陸

2021-08-16 03:54:25 字數 1071 閱讀 5146

原理:

許可權驗證的時候一定要判斷資料庫寫入session_id是不是和$_session裡面的session_id是不是一致,如果不一致就退出,這個防止同乙個賬戶被多個人同時登陸的實現方法就是基於這個session_id

一定要設定session的存活時間,和session關掉頁面就session消除

如果有其他人登陸的時候,會寫入新的session_id,這樣舊的使用者就會被許可權驗證不通過,但是不能做到實時效果,這樣就擠掉了舊使用者,這裡有個缺陷,就是每次驗證許可權的時候就需要查詢資料庫,如果可以吧這個資料放在redis就比較好

其實其他的驗證方法,也類似使用這種方法,有個驗證的憑證,只不過這種方法需要查詢資料庫,但是放在redis之後就比較好

或者統一管理session的時候,比如放在資料庫就更好了,記住吧session_id也存入資料庫,或者放在memcash,redis就比較方便,比如在redis進行管理的時候,就可以直接更新掉存在session_id

首先設計表:

1 id int(11) auto_increment

2 username varchar(20) utf8_general_ci

3 password varchar(20) utf8_general_ci 

4 ip varchar(20) utf8_general_ci

5 session_id varchar(100) utf8_general_ci

6 login_time int(20) 

實現:[php]view plain

copy

public

function

aa()else

//開始驗證 --防止同乙個使用者重複登入

nbsp;$res

= m(

"onlyuser"

)->where(

"name = '$uname' and pwd = '$upwd'"

)->find();  if(

$res

)  else

else

}  }else

}  

strict 模式下不允許乙個屬性有多個定義

vue專案,打包後在ie11上執行,報了 strict 模式下不允許乙個屬性有多個定義 這個錯誤,但在別的瀏覽器就沒有事,了解後才發生這個乙個嚴格模式下執行了,中有乙個嚴格性的錯誤,但js是壓縮過的,然後找了好久才發現問題 是我在繫結class的判斷寫有兩個一樣的樣式 class 中的item.st...

strict 模式下不允許乙個屬性有多個定義

報錯截圖如下 解決 vue element ui 專案,打包後在ie11上執行,報了 strict 模式下不允許乙個屬性有多個定義 這個錯誤,但在別的瀏覽器就沒有事,了解後才發現打包壓縮後的 是在嚴格模式下執行的,而ie瀏覽器卻對 有乙個嚴格的限制,不允許同一標籤中有重複的屬性。到此處大家要注意了,...

判斷出乙個表的哪些欄位不允許為空

select column name from information schema.columns where is nullable no and table name admin columns 當前資料庫中當前使用者可以訪問的每乙個列在該檢視中佔一行。information schema.c...