• ucenter通信实现同步登录、同步退出(详细)


    首先,需要去官网下载一个ucenter的包。然后解压下来。

    先把ucenter/ucenter这个文件夹复制到你的项目根目录下改名为uc_server;(这里只是我建议修改,以便于我下面写的配置);

    然后将ucenter/advanced/uc_client复制粘贴到自己的项目上。

    在你项目根目录创建一个api的文件夹、把ucenter/advanced/examples/api里头有个uc.PHP复制到你项目的api文件夹下。

    其次同样,ucenter/advanced/examples把include文件夹复制到你项目根目录下。(这个呢,是连接数据库的一个类,放进去就可以了什么都不用改)

    接下来在你网站根目录下创建一个config.inc.php文件。

    [php] view plain copy
     
    1. <?php   
    2. define('UC_CONNECT', 'mysql');   // 连接 UCenter 的方式: mysql/NULL, 默认为空时为 fscoketopen()  
    3.                                                // mysql 是直接连接的数据库, 为了效率, 建议采用 mysql  
    4.   
    5. //数据库相关 (mysql 连接时, 并且没有设置 UC_DBLINK 时, 需要配置以下变量)  
    6. define('UC_DBHOST', 'localhost');            // UCenter 数据库主机  
    7. define('UC_DBUSER', 'root');                // UCenter 数据库用户名  
    8. define('UC_DBPW', 'root');                    // UCenter 数据库密码  
    9. define('UC_DBNAME', 'ucenter');                // UCenter 数据库名称  
    10. define('UC_DBCHARSET', 'utf-8');                // UCenter 数据库字符集  
    11. define('UC_DBTABLEPRE', 'ucenter.uc_');            // UCenter 数据库表前缀  
    12.   
    13. //通信相关  
    14. define('UC_KEY', 'yeN3g9EsNfiaYfodV63dI1j8Fbkssk5HaL7W4yaW4yj4Mf45mfg2v899g451k576');                // 与 UCenter 的通信密钥, 要与 UCenter 保持一致  
    15. define('UC_API', 'http://zd1.t/ucenter/ucenter');    // UCenter 的 URL 地址, 在调用头像时依赖此常量  
    16. define('UC_CHARSET', 'utf-8');                // UCenter 的字符集  
    17. define('UC_IP', '');                    // UCenter 的 IP, 当 UC_CONNECT 为非 mysql 方式时, 并且当前应用服务器解析域名有问题时, 请设置此值  
    18. define('UC_APPID', 1);                    // 当前应用的 ID  
    19. define('UC_PPP', '20');  
    20. //ucexample_2.php 用到的应用程序数据库连接参数  
    21. $dbhost = 'localhost';            // 数据库服务器  
    22. $dbuser = 'root';            // 数据库用户名  
    23. $dbpw = 'root';                // 数据库密码  
    24. $dbname = 'ucenter';            // 数据库名  
    25. $pconnect = 0;                // 数据库持久连接 0=关闭, 1=打开  
    26. $tablepre = 'example_';           // 表名前缀, 同一数据库安装多个论坛请修改此处  
    27. $dbcharset = 'utf8';            // MySQL 字符集, 可选 'gbk', 'big5', 'utf8', 'latin1', 留空为按照论坛字符集设定  
    28.   
    29. //同步登录 Cookie 设置  
    30. $cookiedomain = '';             // cookie 作用域  
    31. $cookiepath = '/';            // cookie 作用路径  


    这里根据自己的数据库名称和数据库修改。

    然后在你的api/uc.php目录下define('IN_DISCUZ', TRUE);的上面放入

    [php] view plain copy
     
    1. define('UC_CONNECT', 'mysql');  
    2. define('UC_DBHOST', 'localhost');  
    3. define('UC_DBUSER', 'root');  
    4. define('UC_DBPW', 'root');  
    5. define('UC_DBNAME', 'ucenter');  
    6. define('UC_DBCHARSET', 'utf-8');  
    7. define('UC_DBTABLEPRE', '`ucenter`.uc_');  
    8. define('UC_DBCONNECT', '0');  
    9. define('UC_KEY', 'yeN3g9EsNfiaYfodV63dI1j8Fbkssk5HaL7W4yaW4yj4Mf45mfg2v899g451k576');   // 与 UCenter 的通信密钥, 要与 UCenter 保持一致  
    10. define('UC_API', 'http://zd1.t/mvc/uc_server'); // UCenter 的 URL 地址, 在调用头像时依赖此常量  
    11. define('UC_CHARSET', 'utf-8');              // UCenter 的字符集  
    12. define('UC_IP', '127.0.0.1');               // UCenter 的 IP, 当 UC_CONNECT 为非 mysql 方式时, 并且当前应用服务器解析域名有问题时, 请设置此值  
    13. define('UC_APPID', '1');                // 当前应用的 ID  
    14. define('UC_PPP', '20');  

    上面的配置根据自己的网站域名自己配置一下。

    接下来登录进入你的ucenter,建议添加一个会员admin 不然没法做同步登录,没用户。

    通信是很重要的,如果不通信的话,web1网站通信不到你的ucenter 那么你的web2网站也没有数据去给他同步登录。

    这两个网站呢 就是我做同步登录的两个网站。 进入编辑

    这么弄的话 通信就成功了。 那么通信成功后实现同步登录、同步退出

    [php] view plain copy
     
    1. include_once "./config.inc.php";   
    2. include_once "./uc_client/client.php";  
    3. <pre>list($uid, $username, $password, $email) = uc_user_login($_POST['username'], $_POST['password']);  
    4. if($uid > 0) {  
    5.     echo '登录成功';  
    6.     echo uc_user_synlogin($uid);  
    7. elseif($uid == -1) {  
    8.     echo '用户不存在,或者被删除';  
    9. elseif($uid == -2) {  
    10.     echo '密码错';  
    11. else {  
    12.     echo '未定义';  
    13. }  
    
    


    这里的uc_user_login在你的uc_client/client.php中 这个函数验证登录。验证成功的话返回相对应的值。 可以看看ucenter手册。地址http://www.phpddt.com/manual/ucenter/html/user.htm###

    给你们贴个状态码图好了

    它返回的一个数组,键值0是你登录用户的id 如果大于0的话就登录成功了。

    同步退出的话手册里面也有 个人感觉手册很好阿 写的很详细 可以多看看。

    二话不说 继续贴图

    退出的话直接echo uc_user_synlogout();就完事了。 

    同步登陆函数:uc_user_synlogin; 同步退出函数:uc_user_synlogout;

    他这两个函数呢 如果执行的话 他会执行一段js代码 你们可以去通信成功那块看一下 直接右键看源代码点地址就可以了。 如果要看具体一些的话,这我就不说了 网上一大推。

    相当于他执行这个js代码  去告诉每个应用中的uc.php “我登录了我退出了”;然后uc接收到数据 就将这个数据发送给你的项目。 所以说每个应用你都得放一个uc.php去通信。对吧

    到这块呢 基本已经能同步登录和退出了。 两个项目进行同步登录退出的话  按照我这个流程从头再来一遍就完事了。如果要深入理解的话 那就从网上找资料各种理解 各种去看代码吧  反正我是过来了  过程很难过 但是收获很多 ~

  • 相关阅读:
    【258】雅思口语常用话
    【256】◀▶IEW-答案
    UITabBarController 标签栏控制器
    枚举
    HDU3631:Shortest Path(Floyd)
    让Barebox正确引导Tiny6410的linux内核
    调度子系统2_核心调度器
    12.10 公司面试总结
    X265编译中C2220错误的解决办法
    JSP元素和标签
  • 原文地址:https://www.cnblogs.com/wenxinphp/p/7154603.html
Copyright © 2020-2023  润新知