原文: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

Yii整合ucenter实现单点登录的更多相关文章

  1. ucenter的单点登录

    所谓单点登录,无非就是几个站点共用一个用户中心,实现同步登陆,同步退出. 服务器端:Loog SSO . 客服端: ucenter,说实话dz商业化确实让php发展了不少. ucenter 基本原理: ...

  2. CAS5.3服务器搭建及SpringBoot整合CAS实现单点登录

    1.1 什么是单点登录 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的 ...

  3. java J2EE与DiscuzX3.2的UCenter实现单点登录

    最近笔者在实现Java项目对discuz的整合.在此过程中,查了很多这方面的资料,发现网上并没有说得比较全面的文章.笔者博取众长以及自己在此过程中遇到的问题,写下来供大家参考,希望大家可以在这过程中少 ...

  4. Yii 同域名的单点登录 SSO实现

    SSO (Single Sign-on) 顾名思义就是几个子项目共用一个登录点. 原理简单来说就是服务端session 共享, 客户端跨域cookies. 实现非常简单,protected/confi ...

  5. pac4j探索(一)之buji-pac4j shiro整合Cas实现单点登录

    https://blog.csdn.net/hxm_code/article/details/79181218 https://blog.csdn.net/hxm_code/article/detai ...

  6. SpringSecurity3整合CAS实现单点登录

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  7. 采用CAS原理构建单点登录

    企业的信息化过程是一个循序渐进的过程,在企业各个业务网站逐步建设的过程中,根据各种业务信息水平的需要构建了相应的应用系统,由于这些应用系统一般是在不同的时期开发完成的,各应用系统由于功能侧重.设计方法 ...

  8. java和Discuz论坛实现单点登录,通过Ucenter(用户管理中心)

    标题有点问题,没有进行修改. 一 Discuz论坛搭建步骤 1:服务器环境配置 服务器要支持php语言+支持mysql 5.0以上的数据库 + Apache服务器(支持网站的一个服务器,通过域名的能访 ...

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

    Comsenz(康盛)的UCenter当前在国内的单点登录领域占据绝对份额,其完整的产品线令UCenter成为了账号集成方面事实上的标准. 基于UCenter,可以将Comsenz旗下的Discuz! ...

随机推荐

  1. PS 图像调整算法——饱和度调整

    算法参考自 阿发伯 的博客. http://blog.csdn.net/maozefa 饱和度调整 图像的饱和度调整有很多方法,最简单的就是判断每个象素的R.G.B值是否大于或小于128,大于加上调整 ...

  2. HBase运维经验

    http://www.qconbeijing.com/download/Nicolas.pdf 重点看了下facebook做了哪些改进以及他们的运维经验,比较重要的有以下几点: 改进: 1 加强了行级 ...

  3. window7如何配置修改环境变量

    http://jingyan.baidu.com/article/b24f6c82cba6dc86bfe5da9f.html

  4. Java + Selenium + TestNG + Maven

    环境准备: 1. Java: Install Java jdk: Version: java 1.8 or aboveConfigure Java Environment Variables:Add ...

  5. pslq常用操作

    1,登录后默认自动选中My Objects  默认情况下,PLSQL Developer登录后,Brower里会选择All objects,如果你登录的用户是dba,要展开tables目录,正常情况都 ...

  6. Web 前台优化

    大型网站--前端性能优化和规范 2013-10-28 09:00 by 贤达, 2769 阅读, 10 评论, 收藏, 编辑   Web性能涉及的范围太广,但一般web开发者在程序上线以后很多都曾遇到 ...

  7. SQL语言逻辑执行顺序

    SQL语言逻辑执行顺序 2012-12-18 16:18:13 分类: 数据库开发技术 查询的逻辑执行顺序 FROM < left_table> ON < join_conditio ...

  8. CSS 弹性容器

    该文章为英文原文译文及一些自己的拙见墙裂推荐读原文浏览原文请戳这里 : CSS-STRICKS 弹性布局 (Flexbox Layout) 什么是弹性布局 Flexbox Layout 模块旨在提供一 ...

  9. web3.js

      安装 别按照官网上面 npm install web3 下载,我已经吃过一次亏了 npm initnpm install ethereum/web3.js --save   web3.isConn ...

  10. windows下注册表的操作

    原博:https://blog.csdn.net/denghubu/article/details/5765921 1.       注册表简介 注册表是为Windows NT和Windows95中所 ...