phpcms+ucenter+discuz论坛整合教程
设置UCenter下各应用同步登录
Comsenz 同时发布了 UCenter、UCenter Home、Discuz!、SupeV、ECShop、SupeSite 等多个产品,各个产品可以通过 UCenter 实现会员信息的整合,通过简单的设置也可以达到同步登录退出。
设置步骤如下:
一、首先,登录 UCenter 后台,应用管理,确保该应用与 UCenter 通信成功。如果通信不成功,可以参考以下步骤检查下:
1、在 UCenter 后台,应用管理,编辑,接口 URL,检查这个地址是否正确。
2、应用 IP:这里正常情况下留空即可。如果由于域名解析问题导致 UCenter 与该应用通信失败,请尝试设置为该应用所在服务器的 IP 地址。
3、通信密钥:这里的通信密钥要和各个应用中 config 配置文件里的 define('UC_KEY', ) 中设置的数字对应。
4、检查 UCenter 后台,应用管理,编辑,ID 值是不是和该应用 config 配置文件里的 define('UC_APPID', ) 的值相同。
二、登录 UCenter 后台,应用管理,编辑各个应用,确保“是否开启同步登录”,选择的“是”。见下图:
三、检查各个应用 config 文件中的 cookie,不要设置为一样的。
四、确保各个应用中 config 文件设置的参数(通信密钥/接口 URL)要和 UCenter 后台应用管理中各个参数设置相同。
如果不能同步登录,请参考下面的方法进行排查。
1、检查 UCenter 后台各应用的通信是否成功。
2、检查确定 UCenter 里各个应用中的“是否开启同步登录:”需选择“是”。
3、检查各应用的 cookiepre,不能设置为一样的,也就是每个应用的 cookiepre 值都要设置为不同的。
4、请检查下 UCenter Home 的 config.php 文件里面的 UCenter 参数设置是否正确,导致 UCenter Home 连接不上 UCenter。
可以登陆 UCenter 后台 => 应用管理 => 编辑 UCenter Home 这个应用,将里面最下面应用的 UCenter 配置信息复制一份,将 UCenter Home 的 config.php 里面的对应信息替换下。
5、其它应用同理,也是检查应用的配置文件里 UCenter 参数设置是否正确,操作步骤同上。
6、对于编码为 utf8 的用户,注意检查自己的 config 文件有没有修改过编码,默认的编码是 ansi 编码,而不是 utf8 编码。如果修改过 config 文件有 utf8 编码,则会出现 UCenter 通信不成功导致的无法登录情况。
7、如果用户在论坛或其他应用注册,新用户第一次登陆 UCenter Home 或其他应用时,需要手动登陆一次,以后可以同步登陆。
8、Discuz!7.0.0 无法和其他应用同步登陆
打开 global.func.php,找到
$show_message = str_replace("'", "\'", strip_tags($show_message));
替换为:
$show_message = str_replace("'", "\'", $show_message);
如果还不行
Discuz!7.0.0 正式版在头部不能显示空间的连接,前提是同一个 UCenter 下安装了UCenter Home 了。
打开 ./include/cache.func.php
找到
if(@include(DISCUZ_ROOT.'./uc_client/data/cache/apps.php') && is_array($_CACHE['apps'])) {
替换为
@include(DISCUZ_ROOT.'./uc_client/data/cache/apps.php');
if(is_array($_CACHE['apps'])) {
9、到应用的配置文件中,修改 'UC_IP' 地址为你服务器的 IP 地址。
以前的是
define('UC_IP', '127.0.0.1);
改成
define('UC_IP', '69.89.31.213');
修改之后一切正常,可以同步。
解释:127.0.0.1 是因为有的服务器不支持自己访问自己造成的,很多虚拟主机都有这问题。
10、如果在论坛后台 => 全局 => 注册与访问 => 设置邀请注册 和 Email 验证注册的话 ,在其他应用注册的用户,在那个应用登陆后访问论坛会处于未登陆状态,建议先关闭这个设置。