原文: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. 提高HBase写性能

    以下为使用hbase一段时间的三个思考,由于在内存充足的情况下hbase能提供比较满意的读性能,因此写性能是思考的重点.希望读者提出不同意见讨论 1 autoflush=false的影响 无论是官方还 ...

  2. Asp.NetCore+Microsoft.AspNetCore.SignalR前后端分离

    1.新建WebApi 2.安装Microsoft.AspNetCore.SignalR 3.新建一个集线器和消息类 using Microsoft.AspNetCore.SignalR; using ...

  3. java 如何使的float保留2位或者多位小数 (转载)

    转载自 http://blog.csdn.net/com_stu_zhang/article/details/7214565 方法1: float   f   =  34.232323;    Big ...

  4. 接口文档神器之apidoc

    //@desn:apidoc linux环境  windows环境使用 //@desn:码字不宜,转载请注明出处 //@author:张慧源  <turing_zhy@163.com> / ...

  5. 基于one2team框架的Highcharts图表图片导出方案

    这篇文章已经没有什么意义了,新版的HIghcharts提供Java图片导出解决方案,你需要做的就是下个Maven,bulid一个war就Ok了.---addedy on 2012-11-15 多说一句 ...

  6. eclipse更新time out的问题

    因为网络等诸方面的原因,中国国内访问download.eclipse.org非常慢,更新往往都会失败,简单解决的是从eclipse官网下载镜像列表中选一个中国镜像设为更新站点,当然这个镜像的选择,需要 ...

  7. 分布式文件系统MFS、Ceph、GlusterFS、Lustre的比较

    原文:http://blog.csdn.net/metaxen/article/details/7108958 MooseFS(MFS) Ceph GlusterFS Lustre Metadata ...

  8. Ocelot中文文档-授权

    Ocelot支持基于声明的授权. 这意味着如果您有要授权的路由,您可以将以下内容添加到您的ReRoute配置中. "RouteClaimsRequirement": { " ...

  9. 黄文俊:Serverless小程序后端技术分享

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 黄文俊,现任腾讯云SCF无服务器云函数高级产品经理,多年企业级系统开发和架构工作经验,对企业级存储.容器平台.微服务架构.无服务器计算等领域 ...

  10. 如何确保API的安全性

    目标: 定义API安全性要求 使用security scheme来应用资源和方法级策略 定义API的自定义security scheme 将OAuth2.0外部供应商策略应用到资源方法 为API定义一 ...