织梦5.7-utf8 + DZX3.1-utf8 + UCenter1.6整合实现网站和论坛会员互通,并且双向同步登陆关键点:
1、实现通讯成功比较简单,UC服务端地址,IP等配置正确就一般都可以了。
2、实现会员登陆、注销双向同步
通讯成功后还不能实现双向同步,必须进行以下操作
1、进入Ucenter管理中心,应用管理,然后编辑任意一个应用。比如DZ,复制“通信密钥”,返回,粘贴到应用DEDE
的通信密钥里面,保存
2、打开DZ安装目录下的CONFIG目录中的config_ucenter_default.php,修改第22行
define('UC_KEY', '把你刚才复制的通信密钥粘帖到这里'); 保存。
3、打开DEDE目录中include/common.inc.php,找到底部的UC配置,同样修改通信密钥为刚才复制的密钥
以上三步主要目的是保证DEDE,DZ使用相同的密钥,以实现同步通信。
完成以上三步以后一般情况下都可以正常登陆了。但是我这里出了一个问题,会员从DEDE登陆后可以成功进入BBS,
也能同步退出,但从BBS登陆就不能进入DEDE,只实现了单向。
解决过程:
网上找了一检测代码,此代码直接模拟登陆完成后登陆程序通知UC进行同步登陆的过程,正常情况下应输出一个到
UC_Server的调用URL。
<?php
error_reporting('E_ALL');
include_once "config/config_global.php";
include_once "config/config_ucenter.php";
include_once "uc_client/client.php";
print_r($_COOKIE);
echo '_AAA_<br/>';
echo uc_user_synlogin(1);
?>
复制保存为test.php到BBS根目录,浏览器访问,发现并没有输出。
进入DZ的uc_client/client.php,找到uc_user_synlogin函数,
函数内有一段代码
if(@include UC_ROOT.'./data/cache/apps.php') {
if(count($_CACHE['apps']) > 1) {
$return = uc_api_post('user', 'synlogin', array('uid'=>$uid));
} else {
$return = '';
}
}
发现count($_CACHE['apps']) > 1才会有输出,于是打开uc_client下的data/cache/apps.php,发现应用列表
只有一个DZ,并没有DEDE,所以输出为空,当然DEDE就不能实现同步登陆。不知道这个缓存文件应该怎么更新。
最后解决办法:
复制uc_server/data/cache/apps.php 文件到 DZ的 uc_client/data/cache/apps.php
至此,DZ与DEDE的会员双向同步登陆退出完美解决。
1、实现通讯成功比较简单,UC服务端地址,IP等配置正确就一般都可以了。
2、实现会员登陆、注销双向同步
通讯成功后还不能实现双向同步,必须进行以下操作
1、进入Ucenter管理中心,应用管理,然后编辑任意一个应用。比如DZ,复制“通信密钥”,返回,粘贴到应用DEDE
的通信密钥里面,保存
2、打开DZ安装目录下的CONFIG目录中的config_ucenter_default.php,修改第22行
define('UC_KEY', '把你刚才复制的通信密钥粘帖到这里'); 保存。
3、打开DEDE目录中include/common.inc.php,找到底部的UC配置,同样修改通信密钥为刚才复制的密钥
以上三步主要目的是保证DEDE,DZ使用相同的密钥,以实现同步通信。
完成以上三步以后一般情况下都可以正常登陆了。但是我这里出了一个问题,会员从DEDE登陆后可以成功进入BBS,
也能同步退出,但从BBS登陆就不能进入DEDE,只实现了单向。
解决过程:
网上找了一检测代码,此代码直接模拟登陆完成后登陆程序通知UC进行同步登陆的过程,正常情况下应输出一个到
UC_Server的调用URL。
<?php
error_reporting('E_ALL');
include_once "config/config_global.php";
include_once "config/config_ucenter.php";
include_once "uc_client/client.php";
print_r($_COOKIE);
echo '_AAA_<br/>';
echo uc_user_synlogin(1);
?>
复制保存为test.php到BBS根目录,浏览器访问,发现并没有输出。
进入DZ的uc_client/client.php,找到uc_user_synlogin函数,
函数内有一段代码
if(@include UC_ROOT.'./data/cache/apps.php') {
if(count($_CACHE['apps']) > 1) {
$return = uc_api_post('user', 'synlogin', array('uid'=>$uid));
} else {
$return = '';
}
}
发现count($_CACHE['apps']) > 1才会有输出,于是打开uc_client下的data/cache/apps.php,发现应用列表
只有一个DZ,并没有DEDE,所以输出为空,当然DEDE就不能实现同步登陆。不知道这个缓存文件应该怎么更新。
最后解决办法:
复制uc_server/data/cache/apps.php 文件到 DZ的 uc_client/data/cache/apps.php
至此,DZ与DEDE的会员双向同步登陆退出完美解决。