这几天整合ECShop与Discuz X2,发现了Discuz X2一个简单却很严重的bug,导致单点登录失败。本文使用了ECShop2.7.2,Discuz X2。
为了模拟真实环境,特意设置了内部DNS :*.fcy.cn到本机,ECShop使用了mall.fcy.cn的域名,Discuz使用了 www.fcy.cn 的域名。
Discuz X2的安装及ECShop的安装,都是按照官方方法,安装完成后,各自能正常工作。使用Discuz X2自带的UCenter 1.6.0,不再单独安装。
ECShop的用户整合:复制discuz的uc_client目录至ecshop根目录,进入ecshop的管理后台,进行会员整合。输入UCenter 访问地址:http://www.fcy.cn/uc_server ,注意最后没有'/'。整合成功后,进入discuz的ucenter管理后台,能看到ecshop应用已经成功整合,显示通信成功。另外还有个discuz的应用。ecshop,discuz都是作为ucenter的接入应用。但是,这里有个问题,也就是Discuz X2的bug,ECShop应用的主URL为:http://mall.fcy.cn/ ,注意,后面多了一个'/', 如果不删除,会导致单点登录失败。就是说,要检查各个接入的应用主URL,结尾一定不能含有'/'。至此,成功完成单点登录的配置,可以在任意一个子应用完成单点登录和退出。
原理:
一,用户关系
1,UCenter用户表:
ucenter_members,所有用户表,含管理员用户。所有子系统注册的用户都会加入到本表。
ucenter_mergemembers,接入系统导入的用户,如从ECShop导入的用户。
ucenter_admins,UCenter的管理员用户,与ucenter_members关联,非独立用户表。
2,Discuz用户表:
common_member,论坛系统的用户。来自UCenter的用户登录,激活后,在此表产生用户数据。
3,ECShop用户表:
users,ECShop系统的用户。来自UCenter的用户登录,直接在此表产生用户数据。
二,单点登录处理
参考http://xuebingnanmm.iteye.com/blog/627840,其中有些具体文件名称和本文使用版本不同。
部分摘录,适当修改:
1,用户登录bbs,通过logging.php文件中,使用函数uc_user_login验证,如果验证成功,将调用函数uc_user_synlogin(位于uc_client下的client.php文件中),在这个函数中调用 uc_api_post('user', 'synlogin', array('uid'=>$uid));之后向UC_API.'/index.php'传递了数据;这里的UC_API就是在config/config_ucenter.php中的定义的uc_server之URL地址。
2,uc_server的index.php接受参数数据,获得model为user,action为synlogin,就调用control目录下的user.php类中的onsynlogin方法,通过foreach循环,以javascript的方式通知uc应用列表中的应用同步登录;即通过get方式传递给应用目录中api下的uc.php一些数据;
3,uc.php接收通知并处理get过来的数据,并在函数synlogin(位于uc.php中)通过函数_authcode加密数据(默认以UC_KEY作为密钥),用函数_setcookie设置cookie。为了确保cookie能够成功写入,不会被浏览器的安全隐私设置拦截,使用了P3P协议。
4,各个应用在适当的文件中用对应的密钥解码上面设置的cookie,得到用户id等数据;通过这个值来判断用户是否经过其它应用登录过。
附修改过的test.php(使用的用户id为1),作为一个单点登录应用来测试。
<?php
include_once "./config/config_ucenter.php";
include_once "./uc_client/client.php";
echo uc_user_synlogin(1);
echo "<pre>";
var_dump($_COOKIE);
echo "</pre>";
?>
<script type="text/javascript">
var obj=document.getElementsByTagName("script");
for(var i=0;i<obj.length-1;i++) {
document.write("<a href=\""+obj[i].src+"\">"+obj[i].src+"</a><hr>");
}
</script>
分享到:
相关推荐
### PHPCMS、DISCUZ与ECSHOP的整合步骤详解 #### 一、概述 随着互联网技术的发展,各种网站系统之间的整合变得越来越重要。本文将详细介绍如何将PHPCMS、DISCUZ与ECSHOP这三种系统进行整合,以实现更好的用户体验和...
discuz和ecshop整合 discuz和ecshop会员整合
标题中的“ecshop discuz ucenter整合软件”指的是将ECSHOP、Discuz! 和Ucenter三个不同的开源软件进行集成,以实现用户数据的一体化管理。这三个组件在中文互联网社区建设中非常常见,它们各自扮演着重要的角色。 ...
**ECSHOP、Discuz! 与 UCenter 整合详解** ECSHOP、Discuz! 和 UCenter 的整合是一项重要的工作,它能够帮助网站实现用户数据的统一管理,使得用户在登录其中一个系统后,无需再次登录其他关联的系统,提升了用户...
ecshop整合ucenter配置文件
本教程将深入讲解如何将ECShop与其他论坛系统进行整合,特别是与DZ论坛(Discuz!)和PW论坛(PHPWind)的集成,以实现用户数据共享、社区互动等功能。 首先,我们需要了解为什么要整合ECShop与论坛系统。电子商务...
《Discuz与ECShop整合实现会员同步的详细解析》 在互联网时代,电子商务网站与社区论坛的结合已经成为一种常见的运营模式。Discuz是一款知名的社区论坛系统,而ECShop则是一款功能强大的B2C电子商务平台。当这两者...
"ECSHOP整合淘点金采集"这个主题涉及到的是将ECSHOP与淘宝联盟(淘点金)的营销工具进行集成,以实现更高效的电商运营策略。 淘点金是淘宝联盟推出的一种广告推广服务,它允许网站主或个人通过在自己的网站上展示...
ECSHOP与DISCUZ的对接同步是一项常见的网站集成工作,旨在实现用户在两个平台之间的无缝登录、退出、注册及积分兑换,提升用户体验。本文将详细阐述这一过程的每一步骤。 首先,我们需要安装DISCUZ,这是对接的基础...
适用范围 V2.7.0版本及之前下载安装的ECShop各版本;Discuz4.1/5.0版 安装说明: 1、下载相应编码的压缩包,并将文件解压缩。 2、将解压缩出来的文件上传到网店includes/modules/integrates目录下。 3、...
ECSHOP商城系统源码整合模块参数配置-可配置后台新增功能[商家入驻5.0版]
整合Discuz和ECShop意味着将社区功能与电商功能融合在一起,这在很多垂直电商社区平台中非常常见,比如在社区中进行产品讨论,同时在商店中实现购买,形成一个完整的用户生命周期。然而,在整合过程中,同步登出问题...
适用范围 V2.7.0版本及之前下载安装的ECShop各版本;MolyX 2.6.x版 安装说明: 1、下载相应编码的压缩包,并将文件解压缩。 2、将解压缩出来的文件上传到网店includes/modules/integrates目录下。 3、在...
适用范围 V2.7.0版本及之前下载安装的ECShop各版本;MolyX 2.6.x版 安装说明: 1、下载相应编码的压缩包,并将文件解压缩。 2、将解压缩出来的文件上传到网店includes/modules/integrates目录下。 3、在...
将ECSHOP与UEditor整合,可以显著提升ECSHOP后台的商品描述编辑功能,使商家在发布商品信息时能更方便地添加图文内容,提高店铺的展示效果和用户体验。 整合ECSHOP与UEditor1.43的过程涉及到以下几个关键知识点: ...
标题中的"ecshop京东"指的是ECSHOP与京东商城的整合或定制版本。ECSHOP是一款基于PHP和MySQL的开源电子商务系统,而“京东”是中国知名的电商平台。这个压缩包可能包含了一些针对ECSHOP系统进行京东接口对接的补丁、...
ECShop短信插件(2.7.3 UTF-8版)同时整合了语音和短信验证功能;注册页面加强了图形验证,同时能对单个ip请求次数进行设定,对恶意请求有一定的防范作用。
当这两者结合时,便诞生了“Discuz4.1_5.0会员整合插件”,它实现了论坛用户与电商网站用户的无缝对接,大大提升了用户体验。 一、会员整合的核心价值 1. 单点登录:安装此插件后,用户在Discuz论坛上注册或登录的...
好东西就是要分享,这也是本人花了不少大洋搞来的,希望大家体谅一下!...这绝对是个好东西,微信整合ecshop非常好的代码,我这里没上传微商城,如果有微商城,还可以整合到这里的,希望这个能帮助到有需要的人!!!