uchome登陆机制分析(一)

来源:互联网 发布:java 日志统计分析 编辑:程序博客网 时间:2024/05/20 21:57

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

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

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

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

PHP代码
  • //获取用户数据  
  • function 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代码
  •   
  • function 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(),下面进入最关键的函数了:

原创粉丝点击