天天看點

uchome 2.0登陸驗證機制

資料庫​的 方式來進行使用者登入驗證的

1

:登入

A:使用者填好登入表單之後

資料被送出 給source/do_login.php 處理

B:在do_login.php中下面這些

語句接收傳 遞來的使用者名密碼與cookie生效

時間

​​​

uchome 2.0登陸驗證機制

​​​

C:然後驗證使用者送出來的使用者名以及密碼的正确性,不正确則跳轉并提示登入失敗

​​​

uchome 2.0登陸驗證機制

​​​

注意:這裡驗證使用者名與密碼的正确性是通過uc_client在Ucenter使用者中心資料庫中

查詢的

D:若驗證通過之後,再将擷取到得使用者賬戶資訊賦給setarr

變量

數組

​​​

uchome 2.0登陸驗證機制

​​​

E:查詢uchome的資料庫看該使用者資訊是否存在于Uchome資料庫中,不存在的話,則将從Ucenter中查詢到的使用者資料寫入到uchome的 member表中,存在則将member中的密碼替換掉從Ucenter中查詢出來的密碼,存入setarr變量數組中。

​​​

uchome 2.0登陸驗證機制

​​​

F:将使用者登入資訊寫入到Uchome的

session表中

​​​

uchome 2.0登陸驗證機制

​​​

Session表的資料如下

​​​

uchome 2.0登陸驗證機制

​​​

Insertsession

函數在 sourcefunction_space.php中定義

其主要

功能為a: 清除session表中的某個使用者的記錄b:獲得使用者的IP以及是否使用隐身道具

c: 将setarr變量數組中的資料插入到session表中。d:更新

統計數資料 等

G:将使用者名與密碼加密寫入cookie中

​​​

uchome 2.0登陸驗證機制

​​​

2

:驗證

判斷目前使用者登入狀态是通過sourcefunction_common.php中的checkauth函數實作的

下面就來分析這個函數

A:判斷$_cookie[auth]是否存在,若不存在則不進行任何處理,并清除所有cookie

​​​

uchome 2.0登陸驗證機制

​​​

若存在則:

B:從cookie中反解出使用者名跟密碼資訊

​​​

uchome 2.0登陸驗證機制

​​​

注意:這裡說的密碼以及上面說的将密碼加密進cookie中的密碼并不是使用者的真實密碼,而是經過md5雙重加密并且salt處理後的密碼

C:從session資料表中取出使用者ID為$_SGLOBAL[supe_uid]的使用者資訊,若該記錄存在則執行下面的操作,否則執行D操作(直接查 詢使用者資料庫)

​​​

uchome 2.0登陸驗證機制

​​​

如果取出來的密碼與cookie中的密碼相等,那麼判定為登入成功将資料寫入到$_SGLOBAL['session']數組

​​​

uchome 2.0登陸驗證機制

​​​

否則判定為登入失敗,清除所有cookie

D:在C步時,若在session表中沒有該使用者的資料則,在使用者資料表member中查詢該ID得使用者資料,看cookie中的密碼是否與資料庫中的密 碼一樣,如果一樣則登入成功,并将使用者資料寫入到session表中保持使用者的登入狀态,否則登入失敗

​​​

uchome 2.0登陸驗證機制

​​​

上面無論是用session表來判定登入狀态還是用member表來判定登入狀态,都會影響到一個變量,那就 是$_SGLOBAL['supe_uid'],在

程式處理的 時候,使用者登入與否一般要用到得變量就是$_SGLOBAL['supe_uid']。

例如在space.php檔案中 有個這樣的語句

​​​​​​

此語句中的checklogin函數就是檢測使用者是否需要登入

​​​​​​

這個函數就是看$_SGLOBAL['supe_uid']是否存在,存在的話就以這個ID的身份去操作,不存在就說明使用者登入不成功 需要使用者登入才能操作。