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的同步登录!

网站整合Ucenter详细流程

第一步:下载安装UCenter,这里就不详细说了,网上很多教程   1.下载UCenter 下载地址:   2.安装UCenter   第二步:打开下载UCenter文件夹内的advan...
  • u013471586
  • u013471586
  • 2016年11月25日 11:16
  • 2714

自己的网站与UCenter整合(大致流程)

自己的网站与UCenter整合 有人说整合了uc就整合了整个php 就等于整合的整个网络资源,由此可见uc在网络平台的搭建上占怎样的分量,所以如何将自己做的网站与uc整合就是连接整个网络...
  • dabao1989
  • dabao1989
  • 2013年01月04日 09:54
  • 1096

详解ucenter原理及第三方应用程序整合思路、方法

整合了 ucenter就等于整合了整个php界的所有php程序。   一、功用: 不对,何止整合了整个php界的所有php程序,而是整合了 ucenter就等于整合了所有的asp/asp.n...
  • dabao1989
  • dabao1989
  • 2013年01月05日 16:27
  • 686

ucenter同步问题(整合iwebshop或者thinkphp)

对于这个同步问题,纠结了很久,今天终于可以停下来总结一下了! 首先看看官方的例子,以下是示例的文件夹结构:  要注意的是api文件夹的名称不能修改,改过之后就会有意想不到的效果(页面出不来)。...
  • woshihaiyong168
  • woshihaiyong168
  • 2016年10月09日 13:35
  • 549

最新iwebshop与ucenter整合成功方法及bug处理

最新iwebshop与ucenter整合成功方法及bug处理,解决了提示discuzx3.2“通信失败”的问题,是真正的双向同步整合。...
  • CiuPasswort
  • CiuPasswort
  • 2015年10月11日 00:32
  • 1377

使用ucenter整合网站和discuz的同步登陆

首先先说下我做这个的原因。 因为现有项目的需求,需要添加一个论坛。然后把原有网站的用户数据和论坛的数据同步起来,使得用户数据能共用和同步登陆等。。 首先 http://www.comsenz.co...
  • qq_30752937
  • qq_30752937
  • 2016年04月09日 09:26
  • 3330

另类方法整合ucenter(uc)示例简版

http://www.thinkphp.cn/extend/743.html 前言:找过很多整合uc的方法,几乎都存在问题,uc通讯也不一定稳定,所以改变方法,说白点,uc就是存放用户数据的地方,主...
  • cyAspNet
  • cyAspNet
  • 2016年05月03日 17:43
  • 457

介绍ucenter整合思路以及承接iwebshop二次开发

首发csdn,并同步iwebshop官方论坛。 到目前为止,已经帮助几位坛友付费二次开发ucenter整合等功能,碰到的问题也是蛮多的,这里提供给一些整合的思路给大家。 以www.ebuy...
  • CiuPasswort
  • CiuPasswort
  • 2015年02月07日 14:53
  • 664

UCenter在JAVA项目中实现的单点登录应用实例

Comsenz(康盛)的UCenter当前在国内的单点登录领域占据绝对份额,其完整的产品线令UCenter成为了账号集成方面事实上的标准。 基于UCenter,可以将Comsenz旗下的Disc...
  • s346658910
  • s346658910
  • 2014年05月15日 11:40
  • 1295

TP中集成Ucenter

Ucenter原理 Ucenter它所起到衔接各个站点会员注册,登录作用,ucenter的会员表中包含了你需要整合的各个网站的所有会员,用户不管在那个网站注册,程序先是把会员信息添加到了ucente...
  • u011771214
  • u011771214
  • 2014年12月06日 23:52
  • 877
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ThinkPHP3.1.2整合UCenter详解(四)
举报原因:
原因补充:

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