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
- define('UC_CONNECT', 'mysql'); // 连接 UCenter 的方式: mysql/NULL, 默认为空时为 fscoketopen()
- // mysql 是直接连接的数据库, 为了效率, 建议采用 mysql
- //数据库相关 (mysql 连接时, 并且没有设置 UC_DBLINK 时, 需要配置以下变量)
- define('UC_DBHOST', 'localhost'); // UCenter 数据库主机
- define('UC_DBUSER', 'root'); // UCenter 数据库用户名
- define('UC_DBPW', 'root'); // UCenter 数据库密码
- define('UC_DBNAME', 'ucenter'); // UCenter 数据库名称
- define('UC_DBCHARSET', 'utf-8'); // UCenter 数据库字符集
- define('UC_DBTABLEPRE', 'ucenter.uc_'); // UCenter 数据库表前缀
- //通信相关
- define('UC_KEY', 'yeN3g9EsNfiaYfodV63dI1j8Fbkssk5HaL7W4yaW4yj4Mf45mfg2v899g451k576'); // 与 UCenter 的通信密钥, 要与 UCenter 保持一致
- define('UC_API', 'http://zd1.t/ucenter/ucenter'); // UCenter 的 URL 地址, 在调用头像时依赖此常量
- define('UC_CHARSET', 'utf-8'); // UCenter 的字符集
- define('UC_IP', ''); // UCenter 的 IP, 当 UC_CONNECT 为非 mysql 方式时, 并且当前应用服务器解析域名有问题时, 请设置此值
- define('UC_APPID', 1); // 当前应用的 ID
- define('UC_PPP', '20');
- //ucexample_2.php 用到的应用程序数据库连接参数
- $dbhost = 'localhost'; // 数据库服务器
- $dbuser = 'root'; // 数据库用户名
- $dbpw = 'root'; // 数据库密码
- $dbname = 'ucenter'; // 数据库名
- $pconnect = 0; // 数据库持久连接 0=关闭, 1=打开
- $tablepre = 'example_'; // 表名前缀, 同一数据库安装多个论坛请修改此处
- $dbcharset = 'utf8'; // MySQL 字符集, 可选 'gbk', 'big5', 'utf8', 'latin1', 留空为按照论坛字符集设定
- //同步登录 Cookie 设置
- $cookiedomain = ''; // cookie 作用域
- $cookiepath = '/'; // cookie 作用路径
这里根据自己的数据库名称和数据库修改。
然后在你的api/uc.php目录下define('IN_DISCUZ', TRUE);的上面放入
- define('UC_CONNECT', 'mysql');
- define('UC_DBHOST', 'localhost');
- define('UC_DBUSER', 'root');
- define('UC_DBPW', 'root');
- define('UC_DBNAME', 'ucenter');
- define('UC_DBCHARSET', 'utf-8');
- define('UC_DBTABLEPRE', '`ucenter`.uc_');
- define('UC_DBCONNECT', '0');
- define('UC_KEY', 'yeN3g9EsNfiaYfodV63dI1j8Fbkssk5HaL7W4yaW4yj4Mf45mfg2v899g451k576'); // 与 UCenter 的通信密钥, 要与 UCenter 保持一致
- define('UC_API', 'http://zd1.t/mvc/uc_server'); // UCenter 的 URL 地址, 在调用头像时依赖此常量
- define('UC_CHARSET', 'utf-8'); // UCenter 的字符集
- define('UC_IP', '127.0.0.1'); // UCenter 的 IP, 当 UC_CONNECT 为非 mysql 方式时, 并且当前应用服务器解析域名有问题时, 请设置此值
- define('UC_APPID', '1'); // 当前应用的 ID
- define('UC_PPP', '20');
上面的配置根据自己的网站域名自己配置一下。
接下来登录进入你的ucenter,建议添加一个会员admin 不然没法做同步登录,没用户。
通信是很重要的,如果不通信的话,web1网站通信不到你的ucenter 那么你的web2网站也没有数据去给他同步登录。
这两个网站呢 就是我做同步登录的两个网站。 进入编辑
这么弄的话 通信就成功了。 那么通信成功后实现同步登录、同步退出
- include_once "./config.inc.php";
- include_once "./uc_client/client.php";
- <pre>list($uid, $username, $password, $email) = uc_user_login($_POST['username'], $_POST['password']);
- if($uid > 0) {
- echo '登录成功';
- echo uc_user_synlogin($uid);
- } elseif($uid == -1) {
- echo '用户不存在,或者被删除';
- } elseif($uid == -2) {
- echo '密码错';
- } else {
- echo '未定义';
- }
这里的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去通信。对吧
到这块呢 基本已经能同步登录和退出了。 两个项目进行同步登录退出的话 按照我这个流程从头再来一遍就完事了。如果要深入理解的话 那就从网上找资料各种理解 各种去看代码吧 反正我是过来了 过程很难过 但是收获很多 ~
ucenter通信实现同步登录、同步退出(详细)的更多相关文章
- UCenter 通信失败 和 无法同步登陆的调试方法
1. 看请求 2./uc_server/control/admin/app.php echo "\$url = $url <br />\n \$status = $status& ...
- 【ASP.NET】UCenter实现多站点同步登录退出
利用UCenter实现discuz论坛和应用网站同步登录和退出功能 测试环境:Discuz! X3.2.UCenter 1.6..Net Framework 4.0 进入Discuz 后台的UCent ...
- Yii2 多域名跨域同步登录退出
在平台开发过程中,项目分为前台(frontend)www.xxx.com和后台(backend) yun.xxx.com两部分,绑定两个域名, 我们知道在没有绑定域名的时候前后台可以同步登录和退出,但 ...
- Ucenter整合Thinkphp 双向同步登录退出
1.整合初步工作: 1,安装Ucenter,完成后添加应用,填写要对接的网站地址 2,api , uc_client目录放置对接项目的根目录 3,通信对接,新建Ucenter组,confi文件填写在u ...
- 简单分析ucenter 会员同步登录通信原理
1.用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证. 2.如果验证成功,将调用位 ...
- ucenter 整合同步登录的内部实现原理及thinkphp整合ucenter
1.用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证.2.如果验证成功,将调用位于 ...
- 【转】 Ucenter同步登录原理解析
应用中调用函数us_user_synlogin并输出 echo uc_user_synlogin($uid); 解析: 1. 该函数位于client.PHP中 2. 作用实质上是调用ucenter u ...
- ucenter 同步登录总结
部署: discuz默认安装后就安装了uc_server应用 各应用根目录必须有uc_client文件夹. 下载ucenter程序查看范例程序 应用管理中,应用的主 URL必须指向到应用的根目录,应用 ...
- ucenter 整合同步登录的内部实现原理
1.用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证. 2.如果验证成功,将调用位 ...
随机推荐
- redmine本地安装部署
1.railsinstaller-3.2.0.exe 下载地址 http://railsinstaller.org/en 安装railsinstaller 一直点next就可以了,安装完成之后C盘会 ...
- katalon系列四:使用Katalon Studio录制WEB自动化脚本
一.点击图1工具栏中的+号,选Test Case,新建一个用例. 图1 二.接着点图1录制按钮(地球上有个红点图标),打开的Web Recorder中URL输入百度的地址,浏览器选择Chrome,点击 ...
- lesson 24 A skeleton in the cupboard
lesson 24 A skeleton in the cupboard conceal sth from sb 对某人隐藏某事 He conceals his girlfriend from his ...
- python numpy数据相减
numpy数据相减,a和b两者shape要一样,然后是对应的位置相减.要不然,a的shape可以是(1,m),注意m要等于b的列数. import numpy as np a = [ [0, 1, 2 ...
- Python字符串所有操作函数
name = "my \tname is {name} and i am {year} old" print(name.capitalize())#首字母大写 print(name ...
- HTML 之 表单
关于HTML的表单 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=&q ...
- redis 面试
Redis有哪些数据结构? 字符串String.字典Hash.列表List.集合Set.有序集合SortedSet. 如果你是Redis中高级用户,还需要加上下面几种数据结构HyperLogLog.G ...
- Linux内核设计笔记7——中断
中断与中断处理 何为中断? 一种由设备发向处理器的电信号 中断不与处理器时钟同步,随时可以发生,内核随时可能因为中断到来而被打断. 每一个中断都有唯一一个数字标志,称之为中断线(IRQ) 异常是由软件 ...
- 从hive导入到oracle(Hcatalog)
1.使用catalog的情况下: sqoop export --table tableName2 \ #oracle表 --connect jdbc:oracle:thin:@127.0.0.1:15 ...
- 自测之Lesson5:标准I/O
题目:使用perror函数和strerror函数编写一个程序. 程序代码: #include <stdio.h> #include <errno.h> #include < ...