uchome登陆机制分析(二)

uchome_ROOT/uc_client/client.php => uc_api_mysql()

PHP代码
  •   
  •   
  • function uc_api_mysql($model, $action, $args=array())  
  •     //$model ’user’,$action= ’login’,  
  •     //$args Array [username] => test2 [password] => test [isuid] => [checkques] => [questionid] => [answer] =>   
  •     global $uc_controls;  
  •     if(empty($uc_controls[$model]))  
  •         //UC_ROOT uc_client/  
  •         include_once UC_ROOT.’./lib/db.class.php’;  
  •         include_once UC_ROOT.’./model/base.php’;  
  •         include_once UC_ROOT.”./control/$model.php”;  
  •         eval_r(“\$uc_controls['$model'] new {$model}control();”);  
  •         //uc_client/control/user.php,usercontrol()类(继承至base基类)实例化  
  •      
  •     if($action{0} != ’_')  
  •         $args uc_addslashes($args, 1, TRUE);  
  •         $action ’on’.$action;//onlogin,usercontrol()中的方法,可以考虑改造此函数以实现预定功能  
  •         $uc_controls[$model]->input $args;//base.php,base基类的方法  
  •         //return Array [0] => [1] => test2 [2] => test [3] => test@12.com [4] =>   
  •           
  •         return $uc_controls[$model]->$action($args);//返回预定数组,供调用函数分析  
  •     else  
  •         return ”;  
  •      
  •  

我们看看usercontrol类的onlogin()方法:

uchome_ROOT/uc_client/control/user.php

PHP代码
  • //note public 外部接口 登陆接口  
  • function onlogin()  
  •     $this->init_input();  
  •     $isuid $this->input(‘isuid’);  
  •     $username $this->input(‘username’);  
  •     $password $this->input(‘password’);  
  •     $checkques $this->input(‘checkques’);  
  •     $questionid $this->input(‘questionid’);  
  •     $answer $this->input(‘answer’);  
  •     if($isuid)  
  •         $user $_ENV['user']->get_user_by_uid($username);  
  •     else  
  •         $user $_ENV['user']->get_user_by_username($username);  
  •      
  •   //这部分即可改动
  •     $passwordmd5 preg_match(‘/^\w{32}$/’, $password) $password md5($password);  
  •     //note 用户名不存在  
  •     if(empty($user))  
  •         $status -1;  
  •     elseif($user['password'] != md5($passwordmd5.$user['salt']))  
  •         $status -2;  
  •     elseif($checkques && $user['secques'] != ” && $user['secques'] != $_ENV['user']->quescrypt($questionid, $answer))  
  •         $status -3;  
  •     else  
  •         $status $user['uid'];  
  •      
  •     $merge $status != -1 && !$isuid && $_ENV['user']->check_mergeuser($username) 0;  
  •     return array($status, $user['username'], $password, $user['email'], $merge);  
  •  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值