查看: 9658|回复: 24

[整 合] [千狐服务]phpcms V9 整合 Discuz! X1.5 标准教程(3月31日更新)

  [复制链接]
发表于 2011-3-25 14:43:41 | 显示全部楼层 |阅读模式
本帖最后由 kilofox 于 2011-5-17 16:12 编辑

由于 Discuz! X2 正式版即将发布,本人已停止对 phpcms V9 与 Discuz! X1.5 的整合研究。
现在正在制作《phpcms V9 整合 Discuz! X2 标准教程》,择日发布,敬请期待!


欢迎参阅千狐服务网为您精心编辑的《phpcms V9 整合 Discuz! X1.5 标准教程》!

整合原理:
UCenter 作服务端;phpsso 与 Discuz! 分别作 UCenter 的客户端应用;phpsso 与 Discuz! 通过 UCenter 发生交互。
phpcms 通过 phpsso 与 Discuz! 发生交互。

第一步:安装 phpcms V9 。全新安装 Discuz! X1.5 (同时安装 UCenter)。

第二步:在 UCenter 中添加“phpsso 应用”。
1、管理员登录 Discuz! X1.5 管理中心,进入“UCenter”,点击“应用管理”。
2、点击“添加新应用”按钮,选择安装方式为”自定义安装“。在展开的”添加新应用“参数配置表中,各项参数配置如下:
应用名称:phpsso
应用的主 URL:http://localhost/phpcms/phpsso_server   (必填,蓝色字体部分为 phpcms 安装路径,视实际情况而定,最后不要带斜线)
应用 IP:(选填,正常情况下留空即可。如果由于域名解析问题导致 UCenter 与该应用通信失败,请尝试设置为该应用所在服务器的 IP 地址。)
通信密钥:(必填,phpcms 的通信密钥必须与此设置保持一致,否则 phpsso 将无法与 UCenter 正常通信。)
应用类型:其它(必选)
应用的物理路径:(选填,默认留空)
查看个人资料页面地址:(选填,URL中域名后面的部分,如:/space.php?uid=%s 这里的 %s 代表uid)
应用接口文件名称:(选填,默认为uc.php)
标签单条显示模板:(选填,默认留空)
标签模板标记说明:(选填,默认留空)
是否开启同步登录:是(可选,开启同步登录后,当用户在登录 Discuz! 时,同时也会登录 phpcms 。)
是否接受通知:是(可选)

3、提交后,新的应用ID。(记住这个应用ID,在”第三步“中将用到它。)

第三步:配置 phpsso 。
1、管理员登录 phpcms V9 后台管理中心,进入“phpsso”,点击“系统设置”。
2、在“系统设置”下的“UCenter配置”一栏中,各项参数配置如下:
是否启用:是
Ucenter api 地址:http://localhost/discuz/uc_server     (必填,蓝色字体部分为 Discuz! 安装路径,视实际情况而定,最后不要带斜线)
Ucenter api IP:(选填,一般不用填写,遇到无法同步时,请填写 UCenter 主机的IP地址)
Ucenter 数据库主机名:localhost     (必填,视实际情况而定)
Ucenter 数据库用户名:root     (必填,视实际情况而定)
Ucenter 数据库密码:root    (视实际情况而定)
Ucenter 数据库名:discuz     (必填,视实际情况而定)
Ucenter 数据库表前缀:dz_ucenter_     (必填,视实际情况而定。如果此项填写错误,将导致 phpcms 无法注册新会员!
Ucenter 数据库字符集:UTF-8      (必选,视实际情况而定)
应用id(APP ID):(必填,该值来在“第二步”中 UCenter 创建的 phpsso 应用时自动。)
Ucenter 通信密钥:(必填,一定确保该值与在“第二步”中 UCenter 创建的 phpsso 应用密钥相同。)

3、提交。

第四步:查看通信状态。
查看在 UCenter 中创建的 phpsso 应用与 UCenter 通信是否成功。
如果通信成功,则进行下一步。
如果通信失败,请检查“第二步”与“第三步”中的各项参数配置是否正确。

第五步:修改 Discuz! 会员登录相关
1、修改 template\default\member\login.htm  第 51 行,删除
ajaxpost('loginform_$loginhash', 'returnmessage_$loginhash', 'returnmessage_$loginhash', 'onerror');return false;  
2、修改 source\function\function_core.php 第 1478 行,查找
$param['header'] = true;
替换为:
$param['header'] = false;
3、修改 template\default\member\login_s imple.htm 第 2 行,删除
onsubmit="return lsSubmit()"

如有疑问,欢迎访问千狐服务官方网站:Kilofox.net

常见问题解答:
1、phpsso 整合 UCenter 后,Discuz! 注册会员在 phpcms 中为什么不显示昵称?
答:这是因为 Discuz! 只有“用户名”,没有“昵称”的概念。要解决这个问题,可以把 Discuz! 的“用户名”做为 phpcms 的“昵称”来使用。
打开 api/phpsso.php ,在第 41 行(代码为:$userinfo['password'] = isset($arr['password']) ? $arr['password'] : exit('0');)的下面添加如下语句:
$userinfo['nickname'] = isset($arr['username']) ? $arr['username'] : exit('0');
这样修改以后,在 Discuz! 新注册的会员,在 phpcms 中就可以显示昵称了。
但修改以前的会员仍然是没有“昵称”的。这就需要在数据库中修改了。
发表于 2011-3-30 18:22:56 | 显示全部楼层
本帖最后由 stevexu 于 2011-3-30 18:27 编辑

十分感谢,教程写得简明扼要,但很清楚。设置后一次性通信成功。但是发生了如下问题:

1、在V9系统中能成功登陆,但点击“会员中心”试图进入时,弹出窗口提示“您的会话已过期,请重新登陆”字样,然后直接跳转至登陆页;

2、在DZ就不能登陆了。

不知问题到底出在哪里,还请高手指点。

糟糕!!DZ管理后台也无法登陆了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-3-31 09:57:15 | 显示全部楼层
第五步没修改。重新检查一下,修改得是否正确!
回复 支持 反对

使用道具 举报

发表于 2011-4-2 02:39:16 | 显示全部楼层
本帖最后由 zxkj 于 2011-4-2 02:50 编辑

就是在V9注册账号后在DZ里面需要登录账号进行激活,在DZ注册的账号在V9里需要登录一次,怎么样就不用这些过程了那?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-4-2 08:54:50 | 显示全部楼层
从 phpcms 注册后,同步注册到 UCenter ,这是因为 phpcms 实际上是与 UCenter 进行通信。
用该帐号从 Discuz! 登录,实际上是从 UCenter 登录。而在 Discuz! 中,是没有这个帐号的,所以要把 UCenter 中的这个帐号信息注册到 Discuz! 中(即所谓的“激活”)。
这是康盛创想设计的 UCenter 与 Discuz! 帐号转移机制,我们是无法改变的(除非把 Discuz! 从 UCenter 中分离!)
反之,从 Discuz! 注册后,同步注册到 phpsso 。但 phpsso 同时注册到 phpcms ,所以就不需要“激活”了。
回复 支持 反对

使用道具 举报

发表于 2011-4-4 22:58:13 | 显示全部楼层
通过楼主方法,能成功整合,其实v9 整合dz还是非常简单的
回复 支持 反对

使用道具 举报

发表于 2011-4-12 11:30:59 | 显示全部楼层
注意这里程序有一个BUG.
我在设置UCENTER的时候在数据库密码输入时最后面我加了一个空格(复制时多选),加入后点测试数据一切正常。连接成功。这说明在这里程序是可以自动过滤密码尾部的空格的。但当用V9注册新用户时就报错说注册失败,原因是无法连接数据库,这说明在这里就没有自动过滤空格,密码不正确而失败。
之后我查看了数据库发现密码的尾部多了一个空格。将其手动去除后。一切正常。

http://bbs.phpcms.cn/viewthread.php?tid=262586&extra=
回复 支持 反对

使用道具 举报

发表于 2011-4-12 15:17:28 | 显示全部楼层
本帖最后由 bjwuyunlong 于 2011-4-12 17:44 编辑

整合完成后,由于如果在DZ中注册后并不能直接就加入到PHPSSO,要在DZ登录一次后才会将用户传到PHPSSO中,这样一是不方便,二是注册也不统一。所以我们最好是将DZ的注册直接跳转到PHPCMS的注册页面。方如如下:
找到DZ的/templates/default/member/register.htm 文件

  1. <em id="returnmessage4"><!--{if $action != 'activation'}-->$reglinkname<!--{else}-->{lang index_activation}<!--{/if}--></em>
复制代码

改为:



  1. <em id="returnmessage4">

  2. <!--{if $action != 'activation'}-->$reglinkname

  3. <script type="text/javascript">

  4. window.location.href='../log/register.php';

  5. </script>

  6. <!--{else}-->{lang index_activation}<!--{/if}-->

  7. </em>
复制代码

这样在DZ中点注册时就跳到phpCMS的注册页了。大体的整合完成
回复 支持 反对

使用道具 举报

发表于 2011-4-13 03:03:45 | 显示全部楼层
更新后发现不能同步退出
回复 支持 反对

使用道具 举报

发表于 2011-4-13 03:04:10 | 显示全部楼层
在DZ登陆后PC没有登陆
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-4-13 13:01:13 | 显示全部楼层
回复 9# zxkj


    是今天打了 20110413 补丁后不能同步登录的吗?
回复 支持 反对

使用道具 举报

发表于 2011-4-13 20:30:36 | 显示全部楼层
是的!打了20110413补丁后
回复 支持 反对

使用道具 举报

发表于 2011-4-27 09:52:32 | 显示全部楼层
我按照上面的方法安装了 还是不能通信啊
回复 支持 反对

使用道具 举报

发表于 2011-4-27 15:06:11 | 显示全部楼层
兄弟在线呢 帮忙看看啊我的通信 还是不成功啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-5-11 16:07:34 | 显示全部楼层
由于 phpcms v9 打了 20110413 patch 后,会员在 Discuz! X 进行登录,却不能同步登录到 phpcms ,这里给大家分享一下我的整合之道!
因为从 phpcms 注册与登录正常,那就把 Discuz! 的注册与登录任务全部交给 phpcms 吧。
编辑 Discuz! 模板,把有关登录、注册的内容全部删除,或者链接到 phpcms 注册与登录页。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 点击这里注册

本版积分规则

小黑屋|Archiver|phpcms网站管理系统 ( 京ICP备14011169 )

GMT+8, 2019-6-17 10:58 , Processed in 0.238704 second(s), 9 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表