1. 程式人生 > >網頁免登陸實現

網頁免登陸實現

保持 post 商業 eid isset 找到 pos 判斷 exp


鏈接:https://www.zhihu.com/question/20182967/answer/76631201
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

COOKIE由於存儲在客戶端,有被隨意篡改的風險,所以其實服務器判斷用戶登陸狀態,一般都是用SESSION的...SESSION的數據存儲在服務器中,但是必須通過客戶端的COOKIE來找到對應的SESSION
所以用戶登錄的過程實際上是
1:用戶輸入用戶名密碼,POST數據到服務器
2:服務器判斷用戶名密碼是否正確,若正確,則在客戶端創建一個存儲SESSION_ID的COOKIE,並且在服務器中創建一個相對應的SESSION_ID的SESSION,SESSION裏面的數據可能為用戶的數據
3:以後該用戶進行操作時,先從客戶端取出SESSION_ID,找到服務器相對應的SESSION,取出數據,進行校驗後再進行下一步操作..
然後說說我理解的保持登陸狀態

由於COOKIE存儲在客戶端,所以不建議用isset($_COOKIE[‘username‘])來判斷用戶是否登陸.
因為用戶完全可以偽造一個COOKIE,來達到欺騙服務器的目的...
那麽,我想到的兩種方法是:
1:上面有人說了,存儲username和加密的密碼,再次訪問時,服務器取出COOKIE數據,與數據庫做校對,如果通過,則判斷為已經登陸
2:建立一個MySQL表,裏面存cookie_id,username,expire,time,然後每次登陸時,根據用戶選擇保存登陸時間,來生成一個md5加密的cookie_id(可以用username,時間戳和隨機數生成),然後將cookie_id,username,用戶保持的登陸時間,當前時間戳一起插入數據庫中,並且創建一個名為cookieid,值為上述md5加密的cookie_id的COOKIE.
那麽下一次用戶訪問時,服務器可以先取COOKIE,根據COOKIE裏的cookieid找到相對應的數據庫中的數據,判斷有無合法COOKIE,有無生命周期等...如果全部通過就能判定為登陸了

網頁免登陸實現