phpcms v9 ecshop2.3.7 discuz x3.0整合

第一步:彻底安装Phpcms v9 和 Discuz! X3.0的最新版php

  小编是将Phpcms v9安装在根目录,而后在根目录新建一个bbs目录安装Discuz! X2.5,本教程中的路径是以此安装目录为例的,站长们操做时应该以本身实际状况更改路径。另小编制做测试本教程时使用的是最新版的程序,因此不保证全部版本按照本教程都能整合成功,建议将程序升级到最新版。html

第二步:在 UCenter 中添加“phpsso 应用”ajax

  登陆Discuz! X3.0后台,进入“UCenter”,点击“应用管理”后点击“添加新应用”进入应用添加界面,设置以下:数据库

  一、安装方式选择“自定义安装”api

  二、应用类型选择“其余”缓存

  三、应用名称填“phpsso”post

  四、应用的主 URL, 即phpsso_server的路径,视实际状况而定,注意最后不要带斜杠。如本教程填写为http://127.0.0.1/phpsso_server测试

  五、通讯密钥,任意填写64字节之内的英文字母及数字,不过要记住,由于phpcms 的通讯密钥必须与此设置保持一致,不然 phpsso 将没法与 UCenter 正常通讯。如本教程设置通讯密钥为:chinazthis

  六、应用IP、应用的物理路径、查看我的资料页面地址默认留空便可,而应用接口文件名称默认uc.php便可。spa

  七、标签单条显示模板、标签模板标记说明两项默认留空便可。

  八、是否开启同步登陆:是。只有开启后,两款程序才能实现同步登陆。

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

  十、进入后台“站长”,“UCenter 设置”选项。"是否容许直接激活"一项,选择“是”。

  下面去Phpcms v9中配置phpsso。

第三步:配置phpsso

  登陆Phpcms v9后台,进入“phpsso”,点击“系统设置”,进入“UCenter配置”设置界面,设置以下:

  一、是否启用:是

  二、Ucenter api 地址,即uc_server的路径,根据你的安装状况而定,注意最后不要带斜杠。如本教程填写为:http://localhost/bbs/uc_server

  三、Ucenter 数据库信息:根据本身状况填写数据库的信息。其中数据库表前缀的格式为“`数据库名`.数据库前缀”,注意数据库名的不是单引号。

  四、应用id(APP ID),即第二步建立的 phpsso 应用时自动生成的应用ID。

  五、Ucenter 通讯密钥,即第二步中设置的“通讯密钥”,这两个值必定要确保一致,不然会致使没法通讯。

  第四步:查看通讯状态

  登陆Discuz! X3.0后台,进入“UCenter”,点击“应用管理”查看第二步中建立的 phpsso 应用与 UCenter 通讯是否成功。若是通讯失败,请检查“第二步”与“第三步”中的各项参数配置是否正确。

  第五步:修改 Discuz!  X3.0会员登陆相关。

  若不修改此处则在Phpcms v9登陆后能够同步登陆到Discuz!  X3.0,可是在Discuz!  X3.0登陆却没法同步登陆到Phpcms v9。修改步骤以下:

  一、找到discuz目录下 template\default\member\login.htm,删除

onsubmit="{if $this->setting['pwdsafety']}pwmd5('password3_$loginhash');{/if}pwdclear = 1;ajaxpost('loginform_$loginhash', 'returnmessage_$loginhash', 'returnmessage_$loginhash', 'onerror');return false;"

  二、找到discuz目录下 template\default\member\login_s imple.htm ,删除

onsubmit="{if $_G['setting']['pwdsafety']}pwmd5('ls_password');{/if}return lsSubmit();"

  三、找到discuz目录下 /source/function/function_message.php ,查找

$param['header'] = true;

  替换为

$param['header'] = false;



第六步:安装ecshop 版本v2.7.3 release 20121106
1.把discuz X3.0程序包里面的uc_client整个文件夹拷贝一份到ecshop根目录下面,不须要拷贝uc_server
2.登陆ec后台,点击会员管理栏目的会员整合,在显示的页面中点击ucenter后面的安装按钮
3.在显示的窗口中输入ucenter的URL以及创始人密码(舒适提示:ucenter的URL就是dz程序包里面uc_server文件夹的绝对地址,ucenter创始人密码是安装dz过程当中本身设置的)
4.这也是最后一步,点击下一步选择强制转为同一用户;
5.同时清除discuz、ucenter、ecshop、phpcms四个系统的缓存


解决 Ecshop 2.7.3 与 Discuz! X3.0 的同步退出问题

最近一个项目须要整合 Ecshop 和 Discuz。整合过程很简单,最新版的 Discuz! X2 已经自带了 uc_server 和 uc_client。因为主目录是 Ecshop,Discuz 放在 bbs 目录下,为了减小垃圾文件,我全局修改了 Ecshop 里关于 uc_client 的调用路径,改为了 discuz 里自带的,这样两个程序就共用一个 uc_client。

所有设置成接口调用方式后测试发现,两边登录均可以同步登录到另外一程序上,但退出则没法实现同步登录。顺着 Ecshop 的退出流程,顺藤摸瓜找到了 lib_common.php 文件中的 uc_call 这个方法。这个方法的第二个参数 $params 的默认值是 null。而 Ecshop 注销时只传了调用 uc_client 中同步退出方法名作为一个参数的值,第二个参数使用的是默认值。而这个方法中经过 call_user_func_array($func, $params); 来调用对应的方法,问题就在这,第二个 $params 参数若是是 null 则 call_user_func_array 执行失败。解决办法很简单,修改 Ecshop 里 lib_common.php 中 function uc_call($func, $params=null) 这一行改为 function uc_call($func, $params=array()) 便可。

整合完成