您的位置:首页 > 编程语言 > PHP开发

Yii整合ucenter实现单点登录

2015-04-27 15:14 423 查看
原文:http://www.php2.cc/article-1349-1.html

准备工作

1.下载ucenter源码,并安装好

2.下载ucenter开发源码,根据自己的项目下载对应版本(utf-8

ucenter-utf-8.rar

,gbk

ucenter-gbk.rar


解压好之后,在里面能够看到三个文件夹与一个文件,全部copy到自己的项目根目录。

然后进入ucenter后台,创建应用。





应用类型:选择其他

应用名称:自己填写

应用的主URL:填写yii项目的网址

应用IP:填写yii项目的ip地址

是否开启同步登陆:选择是

是否接受通知:选择是









设置好后,点击提交即可。

提交完成后,查看下面的:应用的UCenter配置信息





将里面的信息全部复制一下。

然后找到yii项目的根目录,找到:config.inc.php

将里面的这段信息:

[代码]php代码:

01
define(
'UC_CONNECT'
,
'mysql'
);
02
define(
'UC_DBHOST'
,
'localhost'
);
03
define(
'UC_DBUSER'
,
'root'
);
04
define(
'UC_DBPW'
,
'123'
);
05
define(
'UC_DBNAME'
,
'ucenter'
);
06
define(
'UC_DBCHARSET'
,
'utf8'
);
07
define(
'UC_DBTABLEPRE'
,
'`ucenter`.uc_'
);
08
define(
'UC_DBCONNECT'
,
'0'
);
09
define(
'UC_KEY'
,
'adbejSMW8DCySKMscciI42C0scpGwPvasAy2is4'
);
10
define(
'UC_API'
,
'http://127.0.0.1/ucenter'
);
11
define(
'UC_CHARSET'
,
'utf-8'
);
12
define(
'UC_IP'
,
''
);
13
define(
'UC_APPID'
,
'4'
);
14
define(
'UC_PPP'
,
'20'
);
替换成刚才复制的信息。

然后看下面这段信息:

[代码]php代码:

1
$dbhost
=
'localhost'
;
//
 数据库服务器
2
$dbuser
=
'root'
;
//
 数据库用户名
3
$dbpw
=
'123'
;    
//
 数据库密码
4
$dbname
=
'zb_fm926'
;
//
 数据库名
5
$pconnect
=
0;
//
数据库持久连接 0=关闭,1=打开
6
$tablepre
=
''
;
//
表名前缀,同一数据库安装多个论坛请修改此处
7
$dbcharset
=
'utf8'
;
//
MySQL 字符集,可选 'gbk','big5','utf8','latin1',留空为按照论坛字符集设定
将配置信息修改为yii项目的数据库配置信息。

然后进入ucenter后台,点击应用管理,能够看到刚刚添加的应用,后面的通讯情况,显示通讯成功





OK ,初步配置完成。然后开始配置注册于登陆

打开yii项目,进入目录:\protected\vendor

在里面创建一个文件:ucenter.php

其内容如下:

[代码]php代码:

1
<?php
2
3
$path
=
 dirname(
__FILE__
).
'/../../uc_client/'
;
4
require_once
(
$path
.
'../config.inc.php'
);
5
require_once
(
$path
.
'client.php'
);
然后找到yii项目注册模块,在注册的流程中加入如下代码($username,$password,$email,需要自行获取):

[代码]php代码:

01
//ucenter
02
Yii::import(
'application.vendors.*'
);
03
include_once
$homeUrl
.
'protected/vendor/ucenter.php'
;
04
05
//验证用户名是否存在
06
$flag
=
 uc_user_checkname(
$username
);
07
 
08
if
(
$flag
==
 -1)
09
{
10
    
echo
"<script
 type='text/javascript'>alert('用户名不合法');history.back();</script>"
;
11
    
//$errMsg='用户名不合法';
12
    
exit
;
13
}
elseif
(
$flag
==-2){
14
    
echo
"<script
 type='text/javascript'>alert('包含不允许注册的词语');history.back();</script>"
;
15
    
//$errMsg='包含不允许注册的词语';
16
    
exit
;
17
}
elseif
(
$flag
==-3){
18
    
echo
"<script
 type='text/javascript'>alert('用户名已经存在');history.back();</script>"
;
19
    
//$errMsg='用户名已经存在';
20
    
exit
;
21
}
22
23
//验证邮箱是否存在
24
$flag
=
 uc_user_checkemail(
$email
);
25
if
(
$flag
==
 -4)
26
{
27
    
echo
"<script
 type='text/javascript'>alert('Email 格式有误');history.back();</script>"
;
28
    
//$errMsg='Email
 格式有误';
29
    
exit
;
30
}
elseif
(
$flag
==-5){
31
    
echo
"<script
 type='text/javascript'>alert('Email 不允许注册');history.back();</script>"
;
32
    
//$errMsg='Email
 不允许注册';
33
    
exit
;
34
}
elseif
(
$flag
==-6){
35
    
echo
"<script
 type='text/javascript'>alert('该 Email 已经被注册');history.back();</script>"
;
36
    
//$errMsg='该
 Email 已经被注册';
37
    
exit
;
38
}
39
$uid
=
 uc_user_register(
$username
,
$password
,
$email
);
//注册用户至ucenter
如果注册成功,$uid返回ucenter注册成功之后的uid,判断是否注册成功,直接用if($uid>0)即可

然后修改登录代码:

在登录流程里面加入($username,$password自行获取):

[代码]php代码:

01
//ucenter
02
        
Yii::import(
'application.vendors.*'
);
03
        
include_once
$homeUrl
.
'protected/vendor/ucenter.php'
;
04
05
          
//验证用户名是否存在
06
$flag
=
 uc_user_checkname(
$username
);
07
 
08
if
(
$flag
==-3)
09
{
10
   
11
}
else
{
12
    
echo
"<script
 type='text/javascript'>alert('用户名不存在');history.back();</script>"
;
13
    
exit
;
14
}
15
          
16
          
//到ucenter验证用户名密码是否正确
17
        
list(
$uid
,
$username
,
$password
,
$email
)
=uc_user_login(
$username
,
$password
);
18
19
          
20
          
if
(
$uid
>
 0)
21
          
{
22
//这里运行登录成功的代码
23
         
//将yii登陆状态同步给其他系统
24
$success_content
=
 uc_user_synlogin(
$uid
);
25
header(
"refresh:1;url=/"
);
//登录成功,1秒之后跳转。这里需注意,一定要有一个前端页面的跳转,方便用户给ucenter发送登陆成功的信息
26
echo
$success_content
;
27
exit
;
28
          
}
else
{
29
   
//这里运行登录失败的代码
30
          
}
修改注销登陆:

找到注销登陆模块,在注销登录流程加入如下代码:



[代码]php代码:

1
//ucenter
2
Yii::import(
'application.vendors.*'
);
3
include_once
$homeUrl
.
'protected/vendor/ucenter.php'
;
4
 
5
   
//将yii登陆状态同步给其他系统
6
$success_content
=uc_user_synlogout();
7
header(
"refresh:1;url=/public/login"
);
//注销完成,1秒之后跳转。这里需注意,一定要有一个前端页面的跳转,方便用户给ucenter发送注销后的信息
8
   
echo
$success_content
;
9
   
exit
;
OK,本次修改主要围绕注销登陆来说的,至于修改用户信息的同步,自己根据自己的代码流程来改吧,所有调用到的函数应该都在:uc_client/client.php里面。

注:好久没有发过原创的技术博文了,今天编辑完,感觉超爽!

PHP技术交流QQ群:422137578

除非注明,文章均为 PHP二次开发网 原创,转载请注明本文地址: http://www.php2.cc/article-1349-1.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: