您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
ecshop怎么和discuz整合
巫家昱2025-06-24Discuz教程已有人查阅
导读在做一个电子商务网站,需要在上面挂一个论坛,discuz无疑是较佳的选择,自然就得需要实现ecshop与discuz的同步登陆,否则空挂一个论坛在上面毫无意义。
在做一个电子商务网站,需要在上面挂一个论坛,discuz无疑是较佳的选择,自然就得需要实现ecshop与discuz的同步登陆,否则空挂一个论坛在上面毫无意义。同步登陆不仅方便用户,也能很好的黏住用户和统一管理用户数据。好在之前研究过Ucenter的通信原理,所以实现起来还是比较有底气的,不过还是花了几天的时间才搞定。下面就谈谈ecshop和discuz的整合过程,整合过程中出现的问题及解决方法。
ecshop也是康盛的产品,同步登陆的东西有些文件已经存在,所以相对于整合非康盛的产品来说要稍微容易一些,但实现的方法是一致的。废话不多说,直接进入主题。
1.安装ecshop和discuz,我用的ecshop版本大概是2.7,discuz选择的是x1.5,这个地方得注意编码的一致,否则后面会出错。
2.将discuz中的uc_client整个文件夹直接copy到ecshop根目录下。
3.进入ecshop后台->会员整合->安装Ucenter,这一步比较简单,一般不会出什么问题。这三步完成后去discuz的ucenter后台->应用管理中查看ecshop和discuz是否已经通信成功。这三步完成后似乎就可以了,其实不然,还差得远呢。
我总结一下自己整合过程中出现的几个问题及解决方法:
(1)通信失败;
(2)通信成功,但是ecshop和discuz不能同步登陆;
(3)ecshop新注册的用户到discuz登陆需要激活;
(4)ecshop新注册的用户不能同步登陆到discuz;
(5)discuz注册的用户不能同步登陆到ecshop;
(6)在ecshop登陆或注册的用户,在discuz退出后,不能同步退出到ecshop。
解决方法:
(1)查看Ucenter后台->应用管理,顶部提示如果通信失败尝试修改Ucenter的IP地址,进去一看IP是127.0.0.1果然有问题,直接去掉,问题解决。
(2)通信成功但是不能同步登陆,用FF的firebug跟踪请求发现根本没有同步登陆的请求,而且还报错:BadRequest,InvalidHostName,百思不得其解,果断百度一下发现是discuz后台->站长->Ucenter设置中IP地址是127.0.0.1,直接去掉,但是还不能同步登陆,跟踪discuz同步登陆的代码发现$_G['setting']['allowsynlogin']是0,但是Ucenter应用管理中明明已经开启同步登陆,于是想到可能是缓存的原因,去discuz后台更新缓存,结果同步登陆终于OK。
(3)跟踪同步登陆代码发现ecshop新注册的用户只存放到Ucenter中,激活之后才会写入到pre_common_member中,同时dsetcookie。这个问题的解决方法很明显即增加对pre_common_member及pre_common_member_count的写入(该文件为discuz下的api目录中的uc.php)。
以上就是自己在整合ecshop和discuz时的过程,遇到的问题及解决方法,看到此文并且有这个需要的童鞋希望能帮到你的一点小忙。PS:技术文章真的不好写,每个地方都得仔细斟酌,生怕写错了误导到别人,不过疏漏有时候在所难免,如果发现有错误之处还望指正。ecshop与discuz的整合
ecshop也是康盛的产品,同步登陆的东西有些文件已经存在,所以相对于整合非康盛的产品来说要稍微容易一些,但实现的方法是一致的。废话不多说,直接进入主题。
1.安装ecshop和discuz,我用的ecshop版本大概是2.7,discuz选择的是x1.5,这个地方得注意编码的一致,否则后面会出错。
2.将discuz中的uc_client整个文件夹直接copy到ecshop根目录下。
3.进入ecshop后台->会员整合->安装Ucenter,这一步比较简单,一般不会出什么问题。这三步完成后去discuz的ucenter后台->应用管理中查看ecshop和discuz是否已经通信成功。这三步完成后似乎就可以了,其实不然,还差得远呢。
我总结一下自己整合过程中出现的几个问题及解决方法:
(1)通信失败;
(2)通信成功,但是ecshop和discuz不能同步登陆;
(3)ecshop新注册的用户到discuz登陆需要激活;
(4)ecshop新注册的用户不能同步登陆到discuz;
(5)discuz注册的用户不能同步登陆到ecshop;
(6)在ecshop登陆或注册的用户,在discuz退出后,不能同步退出到ecshop。
解决方法:
(1)查看Ucenter后台->应用管理,顶部提示如果通信失败尝试修改Ucenter的IP地址,进去一看IP是127.0.0.1果然有问题,直接去掉,问题解决。
(2)通信成功但是不能同步登陆,用FF的firebug跟踪请求发现根本没有同步登陆的请求,而且还报错:BadRequest,InvalidHostName,百思不得其解,果断百度一下发现是discuz后台->站长->Ucenter设置中IP地址是127.0.0.1,直接去掉,但是还不能同步登陆,跟踪discuz同步登陆的代码发现$_G['setting']['allowsynlogin']是0,但是Ucenter应用管理中明明已经开启同步登陆,于是想到可能是缓存的原因,去discuz后台更新缓存,结果同步登陆终于OK。
(3)跟踪同步登陆代码发现ecshop新注册的用户只存放到Ucenter中,激活之后才会写入到pre_common_member中,同时dsetcookie。这个问题的解决方法很明显即增加对pre_common_member及pre_common_member_count的写入(该文件为discuz下的api目录中的uc.php)。
1 if($member = DB::fetch($query)) {
2 dsetcookie('auth', authcode("$member[password]\t$member[uid]", 'ENCODE'),$cookietime);
3 }else{//非激活状态下写入
4 $query = DB::query("SELECT email FROM ".DB::table('ucenter_members')." WHERE uid='$uid'");
5 if($a = DB::fetch($query)){
6 $email = $a['emaiil'];
7 }else{
8 $email = '';
9 }
10 $userdata = array(
11 'uid' = $get['uid'],
12 'username' = $get['username'],
13 'password' = $get['password'],
14 'email' = $email,
15 'adminid' = 0,
16 'groupid' = 10,
17 'regdate' = $get['time'],
18 'credits' = 0,
19 'timeoffset' = 9999
20 );
21 DB::insert('common_member', $userdata);
22 DB::insert('common_member_count', array('uid'=>$get['uid']));
23 dsetcookie('auth', authcode("$get[password]\t$get[uid]", 'ENCODE'),$cookietime);
24 }
加完之后此问题解决。(4)因为之前研究过Ucenter通信的原理,所以该问题的第一反应就是ecshop注册完后没有调用同步登陆的代码,于是找到ecshop注册文件user.php在注册代码后面加上:
1 $user->login($username,$password);$ucdata = isset($user->ucdata) ? $user->ucdata : '';
问题顺利解决。(5)该问题跟(4)一样的道理,也是在注册文件member_register.php中增加同步登陆的调用:
1 $synlogin = $_G['setting']['allowsynlogin'] ? uc_user_login($_G['uid']) : '';
这个地方需要注意:一定要在注册模板register.htm中输出$synlogin,因为这个返回值其实就是一段js脚本(发同步登陆的通知),需要放到页面中才能执行。该问题也顺利得到解决。(6)这个问题比较怪异,在ecshop登陆后只能在ecshop同步退出,在discuz则不能,而如果在discuz登陆,在ecshop和discuz均能同步退出。用firebug查看cookie发现从discuz退出的时候cookie也已经清空,但就是不能在ecshop同步退出,困惑之下只能google,按照上面的一个说法在清空cookie时增加第四个cookie路径参数,问题果然得到解决,看来操作cookie的时候真的得注意cookie的路径及域。以上就是自己在整合ecshop和discuz时的过程,遇到的问题及解决方法,看到此文并且有这个需要的童鞋希望能帮到你的一点小忙。PS:技术文章真的不好写,每个地方都得仔细斟酌,生怕写错了误导到别人,不过疏漏有时候在所难免,如果发现有错误之处还望指正。ecshop与discuz的整合
本文标签:
很赞哦! ()
相关教程
图文教程
Discuz X3.1论坛门户的修改方法
discuz如何去掉门户相关分类?discuz这款cms是非常好用的,特别是它的diy功能,在discuzcms中很多站长都需要改很多地方
Discuz学习include变量和转义字符
include/common.inc.php include/global.func.php 参数$cplog文件名 | $str 日志内容
discuz怎么防止恶意注册
简介:这是discuz防止恶意注册!的详细页面,介绍了和php,有关的知识、技巧、经验,和一些php源码等。网上搜出来的,没试过,不知行不行得通,先记录下来。
discuz缓存机制分析介绍
使用缓存机制的目的很明显,降低服务器性能的消耗,对于常用且变动比较小的数据的数据,可以尽可能的使用缓存来解决,代替最原生的不断的进行数据库查询匹配的过程。
相关源码
-
(自适应)大气网络公司工作室个人作品展示网站模板免费下载基于PbootCMS内核开发的响应式网站模板,为网络技术服务类企业打造,具备高度可定制性。通过简洁现代的设计语言展现企业专业形象,后台数据实时同步机制确保多终端内容一致性,查看源码 -
自适应新闻资讯技术博客个人网站pbootcms模板该模板基于PbootCMS开源内核深度开发,该模板适用于游戏新闻网站、游戏博客等企业或个人网站,新闻资讯技术博客pbootcms模板;采用六级分辨率断点适配技术查看源码 -
(自适应)文案文档作文写作word资源网站模板下载本模板基于PbootCMS系统深度开发,针对电影解说、文案分享类网站的特殊需求设计。采用响应式布局技术,确保在手机端和桌面端都能呈现专业的内容展示效果,帮助运营者高效管理影视解说资源。查看源码 -
(自适应)科技产品设备技术作品pbootcms网站模板带下载和招聘基于PbootCMS内核开发的高端科技企业模板,采用响应式布局技术,适配各类移动终端设备。模板设计聚焦科技行业特性,通过模块化结构实现企业形象展示、技术成果发布与人才招募等核心需求查看源码 -
(自适应)绿色新闻生活百科资讯文章博客类网站pbootcms模板源码本模板基于PbootCMS开发,为生活百科、资讯文章和博客类网站设计。采用清新绿色系风格,提供舒适的阅读体验,同时适配PC和移动设备。适用于生活技巧分享、健康知识传播查看源码 -
(pc+wap)pbootcms网站模板蓝色小程序网站开发公司基于PbootCMS内核开发的营销型门户模板,为小程序开发公司、电商软件企业打造。采用HTML5自适应架构,实现PC与手机端数据实时同步展示查看源码
| 分享笔记 (共有 篇笔记) |
