ThinkPHP3.1.2整合UCenter详解(四)

转载 2016年03月25日 18:15:01

ThinkPHP3.1.2整合UCenter详解(三)这一章,实现了同步注册的功能,有了帐号我们就可以来做同步登录了。
      打开UcService.class.php文件,添加一个UC登录和一个登出的方法,代码到UCenter接口开发手册的用户接口那里找用户登录示例代码,把它复制过来,然后稍微更改一下,使其带有返回值,以便下一步的操作,代码如下:

01 public function uc_login($username$password){ 
02     list($uid$username$password$email) = uc_user_login($username$password); 
03         if($uid > 0) { 
04                
05             return array
06                         'uid'           =>   $uid
07                         'username'      =>   $username
08                         'password'      =>   $password
09                         'email'         =>   $email
10                         ); 
11         elseif($uid == -1) { 
12             return  '用户不存在,或者被删除'
13         elseif($uid == -2) { 
14             return '密码错误'
15         elseif($uid == -3) { 
16             return '安全提问错误'
17         else 
18             return '未定义'
19         
20     }

继续在用户接口那里找到同步登录的代码示例,找到“uc_user_synlogin($uid);”其作用是执行同步登录,然后写成uc_synlogin方法如下:

1 public function uc_synlogin($uid){ 
2        
3         return uc_user_synlogin($uid); 
4     }

到这里UcService.class.php文件的登录方法已经写好,接下来打开前台W3note项目的控制器MemberAction.class.php文件写一个同步登录的方法,看代码:

01 public function checkLogin() { 
02            
03         if(!$_POST['username']) $this->error('帐号错误!'); 
04         if(!$_POST['password']) $this->error('密码错误!'); 
05         if(empty($_POST['verify'])) $this->error('验证码必须!'); 
06          import("@.ORG.UcService");//导入UcService.class.php类 
07         $ucService new UcService; 
08         $uidarray $ucService->uc_login($_POST['username'], $_POST['password']); 
09         //dump($uidarray); 
10         $loginurl=$ucService->uc_synlogin($uidarray); 
11         echo $loginurl;//输出同步登录代码,否则无法同步登录 
12          if(!is_string($uidarray)){ 
13            
14         //生成认证条件 
15         $map            =   array(); 
16         // 支持使用绑定帐号登录 
17         $map['username']    = $_POST['username']; 
18         $map["status"]  =   array('gt',0); 
19         if($_SESSION['verify'] != md5($_POST['verify'])) { 
20             $this->error('验证码错误!'); 
21         
22            
23         $memberinfo=$this->Member->where($map)->find(); 
24            
25            
26         if(false === $memberinfo) { 
27             $this->error('帐号不存在或已禁用!'); 
28         }elseif($memberinfo['status']==0){ 
29             $this->error('帐号已禁用!'); 
30            
31         }else 
32             $password = pwdHash($_POST['password']); 
33             if($memberinfo['password'] != $password) { 
34                 $this->error('密码错误!'); 
35             
36             session(C('USER_AUTH_KEY'), $memberinfo['id']); 
37             session('email'$memberinfo['email'] ); 
38             session('loginUserName'$memberinfo['loginUserName']); 
39             session('lastLoginTime'$memberinfo['lastLoginTime']); 
40             session('loginnum'$memberinfo['loginnum']); 
41             session('lastloginip'$memberinfo['lastloginip']); 
42                
43             //保存登录信息(相当于更新信息) 
44             $data array(); 
45             $data['id'] =   $memberinfo['id']; 
46             $data['lastlogintime']  =   time(); 
47             $data['loginnum']   =   array('exp','loginnum+1'); 
48             $data['lastloginip']    =   get_client_ip(); 
49             //$data['verify']   =   $authInfo['verify']; 
50             $this->Member->save($data); 
51              $this->success('登录成功!',U('Member/index')); 
52    
53         
54         
55     }

我们来看一下checkLogin()方法的执行过程。


在项目W3note注册的一个帐号,然后在项目W3note提交登录表单后,首先执行UCenter的登录,前面我们写了两个UCenter的登录方法,在调用之前需要使用“import("@.ORG.UcService");”把UcService.class.php文件加载进来,实例化后得到$ucService,然后就可以使用用$ucService访问UCenterr的登录方法uc_login,返回一个$uidarray值,$uidarray包函什么数据?使用“dump($uidarray);”打印出来,以便下一步的操作,打印结果如下:

array(4) {
 ["uid"] => string(1) "1"
 ["username"] => string(5) "qqabc"
 ["password"] => string(6) "123456"
 ["email"] => string(9) "qq@qq.com"
}


下一步就是以此$uidarray作为参数传给同步登录方法uc_synlogin($uidarray),最后echo 一下uc_synlogin($uidarray)的返回值$loginurl,就可以实现帐号"qqabc"在UCenter登录了。帐号"qqabc"在UCenter登录成功后程序将继续往下执行项目W3note的登录,这里就不多说了。最后的结果是,帐号"qqabc"实现了在UCenter和项目W3note的同步登录!

举报

相关文章推荐

ThinkPHP3.1.2整合UCenter详解(四)

本文转自:http://www.thinkphp.cn/topic/1557.html 有了帐号我们就可以来做同步登录了。 打开UcService.class.php文件,添加一个UC登录和一个登...

ThinkPHP3.1.2整合UCenter详解(一)

最近应公司的要求,要开发一个有点像QQ空间那样的会员管理中心网站,发现UCenter的很多功能酷似QQ空间,于是选择了UCenter作为程序的会员管理中心。前台嘛就选择我之前基于thinkphp3.1...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

ThinkPHP3.1.2整合UCenter详解(三)

在上一章中的ThinkPHP3.1.2整合UCenter详解(二)已经实现了通讯成功了!那么接下来我们的目标: 在thinkphp中会员注册成功时,UCenter Home也同时注册成功。  ...

ThinkPHP3.1.2整合UCenter详解(二)

在ThinkPHP3.1.2整合UCenter详解(一) 中我们安装完了WBlog3.1.2、UCenter_Home_2.0_SC_UTF8和UCenter 1.6.0三个程序后。接下来接着上一篇讲...

ThinkPHP与UCenter整合详解

最近应公司的要求,要开发一个有点像QQ空间那样的会员管理中心网站,发现UCenter的很多功能酷似QQ空间,于是选择了UCenter作为程序的会员管理中心。前台嘛就选择我之前基于ThinkPHP3.1...

Thinkphp整合Discuz_X3.2,无法正常调用Ucenter函数

本人是新手,在Thinkphp 整合Discuz_3.2时,调用UCenter的函数时,怎么也无法成功,折腾了好久,终于成功了,在这里记录一下。 环境:Thinkphp3.1+Discuz_X3.2 ...

thinkphp_3.1.2模板

模板中的变量 ①变量的输出 可以以标量输出(布尔型、整型、浮点型、字符型) 以数组形式输出 C:$name=array('a','b')或$name=array('a'->1,'b'->2...

thinkphp_3.1.2的CURD

thinkphp_3.1.2中的MVC模式 ①MVC: M(Model) 模型 (负责数据的操作,编写model类) V(View) 视图(模板) (负责前台页面展示,编写.html文件...

thinkphp_3.1.2介绍和安装

因为现在学习的是thinkphp_3.1.2版本,所以接下来的讨论是基于框架3.1.2thinkphp简介 ①ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)