0
点赞
收藏
分享

微信扫一扫

uchome登陆机制分析(一)


uchome_ROOT/为uchome的根目录
第一步:
定位到uchome_ROOT/source/do_login.php,找到如下函数:



PHP代码

• //同步获取用户源
• = getpassport($username, $password)) {
• showmessage(‘login_failure_please_re_login’, ’do.php?ac=’.$_SCONFIG['login_action']);
• }



上示函数便是登陆的第一步处理函数,再次定位:

uchome_ROOT/source/function_common.php,找到如下函数:



PHP代码

• //获取用户数据
• getpassport($username, $password) {
• global $_SGLOBAL, $_SC;

• $passport = array();
• if(!@include_once S_ROOT.’./uc_client/client.php’) {
• showmessage(’system_error’);
• }

• $ucresult = uc_user_login($username, $password);
• if($ucresult[0] > 0) {
• $passport['uid'] = $ucresult[0];
• $passport['username'] = $ucresult[1];
• $passport['email'] = $ucresult[3];
• }
• return $passport;
• }


至此,我们可以发现现在开始和uc_client相关函数关联了.我们进入uc_client文件夹,开始分析,定位至:uchome_ROOT/uc_client/client.php



PHP代码



• uc_user_login($username, $password, $isuid = 0, $checkques = 0, $questionid = ”, $answer = ”) {
• $isuid = intval($isuid);
• //define(‘UC_API_FUNC’, UC_CONNECT == ’mysql’ ? ’uc_api_mysql’ : ’uc_api_post’);
• $return = call_user_func(UC_API_FUNC, ’user’, ’login’, array(‘username’=>$username, ’password’=>$password, ’isuid’=>$isuid, ’checkques’=>$checkques, ’questionid’=>$questionid, ’answer’=>$answer));
• return UC_CONNECT == ’mysql’ ? $return : uc_unserialize($return);
• }


因为是mysql,故,UC_API_FUNC的值为uc_api_mysql,通过call_user_func()函数,将参数传给uc_api_mysql(),下面进入最关键的函数了:



举报

相关推荐

0 条评论