您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程

用户中心怎么和discuz的ucenter数据共通

代曼2025-07-07Discuz教程已有人查阅

导读然而问题就来了,怎么把现有网站的用户跟discuz关联到一起呢?后来一同事跟我提到Comsenz旗下UCenter(用户中心),跟我说它能无缝整合多个网站的会员,很容易就能解决这一问题

然而问题就来了,怎么把现有网站的用户跟discuz关联到一起呢?后来一同事跟我提到Comsenz旗下UCenter(用户中心),跟我说它能无缝整合多个网站的会员,很容易就能解决这一问题,然后把UCenter的开发文档链接发给我.于是我这几天就带着问题开始学习UCenter究竟是怎么样实现的无缝管理用户的.
公司的业务发展跟原计划中的一样顺利,伴随着VIP会员的与日俱增,原网站的用户体验越显得苍白没劲,当务之急就是要想办法完善用户体验,加强用户粘度,让用户在网站中形成一个有形无形的关系链,才能更好的留住用户。在用户空间、互动社区这一块,discuz是当前较好的选择。
然而问题就来了,怎么把网站现有的用户跟discuz整合到一起呢?后来一同事跟我提到Comsenz旗下UCenter(用户中心),跟我说它能无缝整合多个网站的会员,很容易就能解决这一问题,然后把UCenter的开发文档链接发给我。于是我这几天就带着问题开始学习UCenter究竟是怎么样实现的无缝管理用户的。
也许是同事过分的神话,又或者是我没接触过discuz的原因,一开始我真的相信UCenter可以自动化的实现无缝管理第三方用户数据,直到碰了壁,我才踏踏实实的过一了遍源代码,长了记性:还是亲妈比较亲。类似我现在维护的网站,对于UCenter来说,属于第三方网站,要想融入进来,还是得做一些代码调整。
下边我讲一讲UCenter的运作原理,至于具体的二次开发,还得根据自己的需求来进行。其实只要掌握了UCenter运作流程,就可以大显身手了。这就看看下边的场景:
1)原有网站A,已有大量用户
2)基于Discuz,新增用户空间、互动社区
3)用户管理中心UCenter
我们需要实现如下功能:
1)网站A的老用户可以无缝融入并使用Discuz的功能
2)在Discuz注册的新用户也可以无缝融入并使用网站A,并且保证用户是唯一的
3)用户可以在网站A与Discuz之间实现同步登录跟注销
UCenter用户中心为了完成统一管理,大致按照下边的处理办法实现
1)把已有的会员相关数据导入UCenter的用户数据表
2)新用户注册都得经过UCenter的审核,网站的注册程序再根据审核结果进行处理,以保证用户名或邮箱的唯一性
3)用户的登录跟注销操作都汇报给UCenter,UCenter用户中心再通知所有的网站程序做进一步处理
上述最关键的第一步,就是把用户导入UC中心,没有这些数据,即使UC后台显示通信成功,也是白搭。
默认的数据表为uc_member,需要的插入的字段为uid、username、password、email、regip、regdate、salt,下边简单讲一下password字段。
password字段的值存储的是密码,加密方式为md5(md5(原始密码)+6位随机字符),如下
$salt = '123456';//随机的6位字符
$password = md5( md5('123456') . $salt );
接下来直入正题,先是用一个简单示例,以图文形式快速的讲解如何接入UCenter。
1)下载UCenter_1.6.0_SC_UTF8.zip,解压得到
解压uc.png
2)把upload文件夹复制出来,放到网站的根目录,并更名为ucenter(图中我用了UCenter,其实可以自己定义,下边还是以小写来讲解)
比如:
Linux系统:/web/ucenter/
windows系统:d:/web/ucenter/
uc文件结构.png
3)通过浏览器访问
我这里的测试环境IP为192.168.1.9,所以访问地址为 http://192.168.1.9/ucenter
题外话:也可以通过nginx或者apache重写一个网址对应到ucenter。
nginx配置参考
server {
listen 80;
server_name .uc.com;
set $root /web/ucenter;
root $root;
location / {
index index.phpindex.html index.htm;
if (!-f $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
}
}
include /etc/nginx/conf.d/php.conf;
}
然后通过 .uc.com这个域名来访问ucenter用户中心。
Linux系统修改:/etc/hosts
windows系统修改:C:\Windows\System32\drivers\etc\hosts
添加映射关系,以后 .uc.com就跟192.168.1.9关联起来了。(类似屏蔽优酷广告的方法,也是通过修改hosts来实现的)
192.168.1.9.uc.com
4)安装ucenter流程就不介绍了,根据提示安装即可
5)添加应用
打开应用管理->添加应用
uc应用管理.jpg
接下来填写相关配置,这里我们选择自定义安装,类型为其他,再填写应用名称、URL即可
配置uc.png
保存后,ucentor会生成一段配置代码,复制下来
获取配置代码.png
6)通过简单的demo来与ucenter进行通信
从步骤1)中解压的advanced目录中,把uc_client还有examples目录中的api、include文件夹一起复制到/web/uc_test文件夹下,得到如下图的目录结构
uc_test1.png
在uc_test目录下新建一个php配置文件config.inc.php,内容就是步骤5)ucentor生成的那段配置代码
7)检查通信情况
再次打开应用管理,就能够检测之前的配置是否正确了。
验证_副本.jpg
我们的测试代码已经跟UCenter正常通讯了,接下来,就跟大家简述一下,同步登录的流程。假设我们拥有以下几个网站:
A)主营网站
B)Discuz论坛
C)UCenter
1)用户在A登录后,A会向C发送一个登录消息,C收到消息后会把消息转发到与UCenter正常通讯且配置正确的应用。这个例子中,B提供的API会收到登录通知,然后处理登录请求。
2)用户在B登录后,B会向C发送一个登录消息,C收到消息后会把消息转发到与UCenter正常通讯且配置正确的应用。这个例子中,A提供的API会收到登录通知,然后处理登录请求。
根据我们上回的配置,网站的API就是:http://192.168.1.9/uc_test/api/uc.php
接下来,我们就以uc.php这个PHP文件为示例,来说明同步登录与同步注销的功能实现。
if(in_array($get['action'], array('test', 'deleteuser', 'renameuser', 'gettag', 'synlogin', 'synlogout', 'updatepw', 'updatebadwords', 'updatehosts', 'updateapps', 'updateclient', 'updatecredit', 'getcreditsettings', 'updatecreditsettings'))) {
require_once DISCUZ_ROOT.'./include/db_mysql.class.php';
$GLOBALS['db'] = new dbstuff;
$GLOBALS['db']->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset);
$GLOBALS['tablepre'] = $tablepre;
unset($dbhost, $dbuser, $dbpw, $dbname, $pconnect);
$uc_note = new uc_note();
exit($uc_note->$get['action']($get, $post));
} else {
exit(API_RETURN_FAILED);
}
这段代码先是连接了mysql数据库,并且实例化了一个类,然后根据获取到的action变量调用类中的方法。
例如UCenter中的通信成功,就是因为成功调用uc_note类中的方法test()。
为了验证这一说法,我们在uc.php里添加如下代码,来记录信息,以便之后的调试。
function mlog($log = '',$file = '') {
if( $file == '' ) $file = 'log.txt';
$log = print_r($log,true);
$log = "date:" . date("Y-m-d H:i:s") . "\n{$log}\n";
file_put_contents($file,$log,FILE_APPEND|LOCK_EX);
}
再修改uc_note的方法test()
function test($get, $post) {
mlog(1);
return API_RETURN_SUCCEED;
}
只要通讯成功,api目录下就多出一个log.txt文件,请确保PHP有权限对目录进行操作。
或许你应该猜到了,方法synlogin、synlogout分别对应了同步登录、同步注销。是的,确实是这样。
在synlogin方法中,我们不需要再去验证用户uid、密码什么的,因为用户确实已经验证通过了UCenter才会发送通知请求的。所以我只需要在synlogin添加用户的SESSION信息。如果需要特殊的操作,比如根据UID查询用户状态、是否为会员等信息,可以参考如下代码:
function synlogin($get, $post) {
$uid = $get['uid'];
$username = $get['username'];
if(!API_SYNLOGIN) {
return API_RETURN_FORBIDDEN;
}
$config = include '数据库配置文件';
$db = new dbstuff;
$db->connect($config['DB_HOST'], $config['DB_USER'], $config['DB_PWD'], $config['DB_NAME'], $config['CONTENT_COMMENT_OPEN'], true);
unset($config);
$strSql = "select status,vip from user where uid = $uid ";
$arrData = $db->fetch_first($strSql);
if( !isset( $_SESSION ) ) session_start();
$_SESSION['user'] = array(
'uid' => $uid,
'username' => $username,
'status' => $arrData['status'],
'vip' => $arrData['vip']
);
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
_setcookie('auth', _authcode($uid."\t".$username, 'ENCODE'));
}
同步注销就更容易了,如果在测试的过程有什么问题,可以用mlog函数来进行调试。
function synlogout($get, $post) {
if(!API_SYNLOGOUT) {
return API_RETURN_FORBIDDEN;
}
if( !isset( $_SESSION ) ) session_start();
session_destroy();
//note 同步登出 API 接口
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
_setcookie('auth', '', -86400 * 365);
}
上边的同步代码是收到登录、注销通知的相关操作,还差发送登录、注销通知的操作。
其实也很简单,直接看这一段登录通知的代码:
include './uc_client/client.php';
$ucsynlogin = uc_user_synlogin($uid);
echo $ucsynlogin;
$ucsynlogin其实是一段js代码,作用也是调用对应的api接口,达到传递信息的作用。
注销通知:
include './uc_client/client.php';
$ucsynlogout = uc_user_synlogout();
echo $ucsynlogout;
至此,UCenter用户中心的功能就介绍的差不多了,其他的功能,都可以从官方的文档上找到,相信通过这些简单的示例,上手应该就容易些了。

本文标签:

很赞哦! ()

相关源码

  • (PC+WAP)楼承板建筑工程合金钢铁材料pbootcms网站源码下载为楼承板生产商及建筑工程企业设计的响应式网站模板,采用PbootCMS内核开发,同步适配电脑与移动设备浏览。通过模块化结构展示工程案例、产品参数等专业内容,帮助建筑建材企业建立标准化数字展示平台,提升行业专业形象。查看源码
  • (PC+WAP)蓝色玻璃纤维制品环保设备营销型pbootcms模板源码下载这是一款针对玻璃纤维行业特点设计的网站模板,采用蓝色系配色方案,体现工业感和环保理念。模板包含产品中心、应用案例、技术支持和新闻动态等核心模块,能够全面展示玻璃纤维制品的技术参数和应用场景。查看源码
  • (自适应响应式)蓝色律师事务所法务团队网站pbootcms模板为律师事务所和法律服务机构打造的专业网站模板,展现法律专业性与权威性,手工编写标准DIV+CSS代码,结构清晰优化,确保高效运行,自动适配电脑、平板和手机等各类设备,提供更好浏览体验查看源码
  • (自适应)高端集团跨国公司产业联盟机构网站模板免费下载基于PbootCMS内核开发的集团级企业网站模板,采用响应式设计架构,确保在各类移动设备上获得浏览体验。通过模块化布局与简约大气的视觉风格,帮助集团企业高效展示组织架构、发展历程和业务矩阵,建立专业的企业形象窗口。查看源码
  • (PC+WAP)企业管理工程造价资产评估财务审计带留言网站模板本模板基于PbootCMS内核开发,为工程造价咨询、财务审计类企业量身打造,同时支持多行业快速适配。采用PC+WAP双端同步设计,数据实时互通,助您高效展示企业形象与服务能力。查看源码
  • (自适应)APP应用软件落地页单页推广页网站模板下载基于PbootCMS内核开发的响应式单页模板,为企业产品展示、服务推广等应用场景设计。通过简洁直观的视觉布局与高效的技术架构,帮助用户快速构建专业级落地页面,实现移动端与PC端数据实时同步展示。查看源码
分享笔记 (共有 篇笔记)
验证码:

本栏推荐