zoukankan      html  css  js  c++  java
  • Yii整合ucenter实现单点登录

    原文: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项目,进入目录:protectedvendor

    在里面创建一个文件: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

  • 相关阅读:
    Flask基础01
    Django logging配置
    JSONP和CORS跨域
    Scrapy框架
    请求库之urllib,requests及工具selenium
    MongoDB安装
    Django 视图层
    Django REST framework 2
    WebSocket
    爬虫性能相关
  • 原文地址:https://www.cnblogs.com/dingxiaoyue/p/4926730.html
Copyright © 2011-2022 走看看