日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Uchome的登录验证机制

發布時間:2025/5/22 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Uchome的登录验证机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

登錄:

?成功后設置cookie

//設置cookie ssetcookie('auth', authcode("$setarr[password]\t$setarr[uid]", 'ENCODE'), $cookietime); ssetcookie('loginuser', $passport['username'], 31536000); ssetcookie('_refer', '');

其中我用到最重要的是:api/uc.php文件中

function synlogin($get, $post) {global $_SGLOBAL;if(!API_SYNLOGIN) {return API_RETURN_FORBIDDEN;}//note 同步登錄 API 接口obclean();header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');$cookietime = 31536000;$uid = intval($get['uid']);$query = $_SGLOBAL['db']->query("SELECT uid, username, password FROM ".tname('member')." WHERE uid='$uid'");if($member = $_SGLOBAL['db']->fetch_array($query)) {include_once S_ROOT.'./source/function_space.php';$member = saddslashes($member);$space = insertsession($member);//設置cookiessetcookie('auth', authcode("$member[password]\t$member[uid]", 'ENCODE'), $cookietime);}ssetcookie('loginuser', $get['username'], $cookietime);}

if($member = $_SGLOBAL['db']->fetch_array($query)) {
include_once S_ROOT.'./source/function_space.php';
$member = saddslashes($member);
$space = insertsession($member);
//設置cookie
ssetcookie('auth', authcode("$member[password]\t$member[uid]", 'ENCODE'), $cookietime);
}
ssetcookie('loginuser', $get['username'], $cookietime);

驗證:

//判斷當前用戶登錄狀態 function checkauth() {global $_SGLOBAL, $_SC, $_SCONFIG, $_SCOOKIE, $_SN;if($_SGLOBAL['mobile'] && $_GET['m_auth']) $_SCOOKIE['auth'] = $_GET['m_auth'];if($_SCOOKIE['auth']) {@list($password, $uid) = explode("\t", authcode($_SCOOKIE['auth'], 'DECODE'));$_SGLOBAL['supe_uid'] = intval($uid);if($password && $_SGLOBAL['supe_uid']) {// 查內存表 session表$query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('session')." WHERE uid='$_SGLOBAL[supe_uid]'");if($member = $_SGLOBAL['db']->fetch_array($query)) {if($member['password'] == $password) {$_SGLOBAL['supe_username'] = addslashes($member['username']);$_SGLOBAL['session'] = $member;} else {$_SGLOBAL['supe_uid'] = 0;}} else {$query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('member')." WHERE uid='$_SGLOBAL[supe_uid]'");if($member = $_SGLOBAL['db']->fetch_array($query)) {if($member['password'] == $password) {$_SGLOBAL['supe_username'] = addslashes($member['username']);$session = array('uid' => $_SGLOBAL['supe_uid'], 'username' => $_SGLOBAL['supe_username'], 'password' => $password);include_once(S_ROOT.'./source/function_space.php');insertsession($session);//登錄} else {$_SGLOBAL['supe_uid'] = 0;}} else {$_SGLOBAL['supe_uid'] = 0;}}}}if(empty($_SGLOBAL['supe_uid'])) {clearcookie();} else {$_SGLOBAL['username'] = $member['username'];} } uchome2.0的登錄驗證機制越來越像Ucenter的了

Uchome2.0采用cookie+ 數據庫 的方式來進行用戶登錄驗證的
1 :登錄
A:用戶填好登錄表單之后 數據 被提交給sourcedo_login.php 處理
B:在do_login.php中下面這些 語句 接收傳遞來的用戶名密碼與cookie生效 時間

C:然后驗證用戶提交來的用戶名以及密碼的正確性,不正確則跳轉并提示登錄失敗

注意:這里驗證用戶名與密碼的正確性是通過uc_client在Ucenter用戶中心數據庫中 查詢
D:若驗證通過之后,再將獲取到得用戶賬戶信息賦給setarr 變量 數組

E:查詢uchome的數據庫看該用戶信息是否存在于Uchome數據庫中,不存在的話,則將從Ucenter中查詢到的用戶數據寫入到uchome的member表中,存在則將member中的密碼替換掉從Ucenter中查詢出來的密碼,存入setarr變量數組中。

F:將用戶登錄信息寫入到Uchome的 session 表中

Session表的數據如下

Insertsession 函數 在sourcefunction_space.php中定義
其主要 功能 為a:清除session表中的某個用戶的記錄b:獲得用戶的IP以及是否使用隱身道具
c: 將setarr變量數組中的數據插入到session表中。d:更新 統計 數數據等
G:將用戶名與密碼加密寫入cookie中

2 :驗證
判斷當前用戶登錄狀態是通過sourcefunction_common.php中的checkauth函數實現的
下面就來分析這個函數
A:判斷$_cookie[auth]是否存在,若不存在則不進行任何處理,并清除所有cookie

若存在則:
B:從cookie中反解出用戶名跟密碼信息

注意:這里說的密碼以及上面說的將密碼加密進cookie中的密碼并不是用戶的真實密碼,而是經過md5雙重加密并且salt處理后的密碼
C:從session數據表中取出用戶ID為$_SGLOBAL[supe_uid]的用戶信息,若該記錄存在則執行下面的操作,否則執行D操作(直接查詢用戶數據庫)

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

否則判定為登錄失敗,清除所有cookie
D:在C步時,若在session表中沒有該用戶的數據則,在用戶數據表member中查詢該ID得用戶數據,看cookie中的密碼是否與數據庫中的密碼一樣,如果一樣則登錄成功,并將用戶數據寫入到session表中保持用戶的登錄狀態,否則登錄失敗

上面無論是用session表來判定登錄狀態還是用member表來判定登錄狀態,都會影響到一個變量,那就是$_SGLOBAL['supe_uid'],在 程序 處理的時候,用戶登錄與否一般要用到得變量就是$_SGLOBAL['supe_uid']。
例如在space.php文件中 有個這樣的語句

此語句中的checklogin函數就是檢測用戶是否需要登錄

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

轉載于:https://my.oschina.net/mickelfeng/blog/114022

總結

以上是生活随笔為你收集整理的Uchome的登录验证机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。