php 单点登录 ucenter 源码,Yii整合ucenter实现单点登录

准备工作

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

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

634319922e7358fcc3ab04341f0d7cf6.png

应用类型:选择其他

应用名称:自己填写

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

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

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

是否接受通知:选择是

c4c063aa5ab3a95845a0e0d6eb746f7d.png

6340034f74a75d03e50ab13f4ff315c1.png

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

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

bbbba338cd53634ed2201202223a431c.png

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

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

将里面的这段信息:

[代码]php代码:define('UC_CONNECT', 'mysql');

define('UC_DBHOST', 'localhost');

define('UC_DBUSER', 'root');

define('UC_DBPW', '123');

define('UC_DBNAME', 'ucenter');

define('UC_DBCHARSET', 'utf8');

define('UC_DBTABLEPRE', '`ucenter`.uc_');

define('UC_DBCONNECT', '0');

define('UC_KEY', 'adbejSMW8DCySKMscciI42C0scpGwPvasAy2is4');

define('UC_API', 'http://127.0.0.1/ucenter');

define('UC_CHARSET', 'utf-8');

define('UC_IP', '');

define('UC_APPID', '4');

define('UC_PPP', '20');

替换成刚才复制的信息。

然后看下面这段信息:

[代码]php代码:$dbhost = 'localhost'; // 数据库服务器

$dbuser = 'root'; // 数据库用户名

$dbpw = '123'; // 数据库密码

$dbname = 'zb_fm926'; // 数据库名

$pconnect = 0; // 数据库持久连接 0=关闭, 1=打开

$tablepre = ''; // 表名前缀, 同一数据库安装多个论坛请修改此处

$dbcharset = 'utf8'; // MySQL 字符集, 可选 'gbk', 'big5', 'utf8', 'latin1', 留空为按照论坛字符集设定

将配置信息修改为yii项目的数据库配置信息。

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

d869f45596c65be6a3409fd9f025d049.png

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

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

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

其内容如下:

[代码]php代码:

$path = dirname(__FILE__).'/../../uc_client/';

require_once($path.'../config.inc.php');

require_once($path.'client.php');

然后找到yii项目注册模块,在注册的流程中加入如下代码($username, $password, $email,需要自行获取):

[代码]php代码://ucenter

Yii::import('application.vendors.*');

include_once $homeUrl.'protected/vendor/ucenter.php';

//验证用户名是否存在

$flag = uc_user_checkname($username);

if($flag == -1)

{

echo "";

//$errMsg='用户名不合法';

exit;

}elseif($flag==-2){

echo "";

//$errMsg='包含不允许注册的词语';

exit;

}elseif($flag==-3){

echo "";

//$errMsg='用户名已经存在';

exit;

}

//验证邮箱是否存在

$flag = uc_user_checkemail($email);

if($flag == -4)

{

echo "";

//$errMsg='Email 格式有误';

exit;

}elseif($flag==-5){

echo "";

//$errMsg='Email 不允许注册';

exit;

}elseif($flag==-6){

echo "";

//$errMsg='该 Email 已经被注册';

exit;

}

$uid = uc_user_register($username, $password, $email);//注册用户至ucenter

如果注册成功,$uid返回ucenter注册成功之后的uid,判断是否注册成功,直接用if($uid>0)即可

然后修改登录代码:

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

[代码]php代码://ucenter

Yii::import('application.vendors.*');

include_once $homeUrl.'protected/vendor/ucenter.php';

//验证用户名是否存在

$flag = uc_user_checkname($username);

if($flag==-3)

{

}else{

echo "";

exit;

}

//到ucenter验证用户名密码是否正确

list($uid, $username, $password, $email) = uc_user_login($username, $password);

if($uid > 0)

{

//这里运行登录成功的代码

//将yii登陆状态同步给其他系统

$success_content = uc_user_synlogin($uid);

header("refresh:1;url=/"); //登录成功,1秒之后跳转。这里需注意,一定要有一个前端页面的跳转,方便用户给ucenter发送登陆成功的信息

echo $success_content;

exit;

}else{

//这里运行登录失败的代码

}

修改注销登陆:

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

[代码]php代码://ucenter

Yii::import('application.vendors.*');

include_once $homeUrl.'protected/vendor/ucenter.php';

//将yii登陆状态同步给其他系统

$success_content =uc_user_synlogout();

header("refresh:1;url=/public/login");//注销完成,1秒之后跳转。这里需注意,一定要有一个前端页面的跳转,方便用户给ucenter发送注销后的信息

echo $success_content;

exit;

OK,本次修改主要围绕注销登陆来说的,至于修改用户信息的同步,自己根据自己的代码流程来改吧,所有调用到的函数应该都在:uc_client/client.php里面。

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

PHP技术交流QQ群:422137578

除非注明,文章均为 PHP二次开发 原创,转载请注明本文地址:http://www.php2.cc/article-1349-1.html


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部