原文: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. C#实现MD5算法

    using UnityEngine; using System.Collections; using System.Security.Cryptography; public class GetMD5 ...

  2. 【图片版】学习CSS网格布局

    简言 CSS网格布局(Grid)是一套二维的页面布局系统,它的出现将完全颠覆页面布局的传统方式.传统的CSS页面布局 一直不够理想.包括table布局.浮动.定位及内联块等方式,从本质上都是Hack的 ...

  3. Django之admin的使用和源码剖析

    admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTALLE ...

  4. Pascal's Triangle(杨辉三角)

    Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Retur ...

  5. 使用SecureCRT的SFTP在WINDOWS与LINUX之间传输文件(转载)

    参考文献: http://ice-k.iteye.com/blog/1068275 http://www.cnblogs.com/chen1987lei/archive/2010/11/26/1888 ...

  6. JavaScript继承详解

    面向对象与基于对象 在传统面向对象的语言中,有两个非常重要的概念 - 类和实例. 类定义了一类事物公共的行为和方法:而实例则是类的一个具体实现. 我们还知道,面向对象编程有三个重要的概念 - 封装.继 ...

  7. SpringMVC:数据绑定入门(-)

    1.数据类型,可以绑定基本数据类型,如int age,或者包装类型如:Integer age; 两者的区别:int 类型时,必填该参数,Integer 可以为空. 2.绑定数组 , 3.绑定对象. 3 ...

  8. selenium获取百度账户cookies

    [效果图] 效果图最后即为获取到的cookies,百度账户的cookies首次获取,需要手动登录,之后就可以注入cookies,实现免密登录. [代码] public class baiduCooki ...

  9. java之SpringMVC配置!配置!配置!

    工欲善其事,必先利其器,要想使用SpringMVC自然要先把配置文件写好. 1.web.xml文件 新建web项目之后webRoot目录下面会有一个web.xml文件,我们先来对其进行配置. < ...

  10. 解析xml字符串时报“前言中不允许有内容”错误。

    一,问题出现经过: j基于java语言webservic服务端接收客户端 传来的xml字符串用 解析时总报:org.dom4j.DocumentException: Error on line 1 o ...