转载http://blog.csdn.net/squallleonheart/article/details/39555259

ecshop安装包:ECShop_V2.7.3_UTF8_release1106.rar
ucenter安装包:UCenter_1.6.0_SC_UTF8.zip
discuz!X安装包: discuz_X3.2_SC_UTF8.zip
mysql数据库管理工具:navicat
mysql是一个优秀的windows平台下的mysql数据库的图形界面管理工具,是本文的活跃主角.可惜注册费太贵.使用本工具需要开启mysql数
据库的远程连接功能.除非mysql数据库和navicat在同一台windows上.
为方便叙述,约定如下:
假定ecshop表前缀:ec_
假定ucenter表前缀:uc_
假定discuz表前缀:bbs_
本文名曰整合discuz论坛,其实是先要整合ucenter的.因为ecshop整合discuz程序上的一些问题,导致无法直接整合discuz.文章[1]说是因为UCenter 表前缀:不是UC_的.但是按照文章[1]整合后,会出现一些问题:
a.会员无法使用原来的密码正常登录;
b.即使能登录,在discuz里需要激活.
正因为有这些问题.所以有了本文.
实际应用背景:网站使用ecshop已经有一段时间,积累了一些用户,discuz是新装.希望把ecshop的用户导入discuz,并能实现同步登录.
整合步骤:
1.解压下载的ucenter安装包
服务器端在upload目录,改名为uc_server,客户端在advanced/uc_client里.借图.

2.安装ucenter服务器端
拷贝ucenter服务器端到ecshop根目录,ecshop/uc_server,访问url地址安装uc_server.
3.拷贝ucenter客户端
拷贝ucenter客户端到ecshop根目录,ecshop/uc_client,同时也替换掉discuzX3.2里的uc_client目录.因为discuz官方要求这样使用ucenter1.6版,避免遗留问题.该要求链接:http://www.discuz.net/thread-2151616-1-1.html
4.设置ucenter信息
ecshop里安装ucenter插件.只设置相关信息,不导入任何用户.借图.

 http://
在下图的地方点击"直接保存配置信息".如果你点了下一步用ecshop的程序导入了所有用户.你可能:
a.因为ecshop用户太多导致php程序执行超时,导入失败.
b.即使成功导入所有用户后,用户也无法使用原始密码登录,至于密码是什么,没有人知道,因为ecshop导入用户的时候算错了密码.

5.导出导入ecshop用户
使用navicat导出ecshop的用户表ec_users,导出以下字段的数据.导出成excel的xls文件users.XLS

user_name

password

reg_time

last_login

last_time

last_ip

ec_salt

salt

用excel手工新增一个字段groupid,设置值为10.discuz中是"新手上路"用户组.
再用excel手工新增一个字段timeoffset,设置为9999或8.discuz中,9999的时区是使用系统默认.8是东八区时间,即北京时间.
如果excel打开该文件时提示某些可能错误,则操作完成后需要另存一下同名文件.因为navicat导出xls文件有些问题,需要用excel另存一下正确的xls文件.
用navica将user.XLS文件导入ucenter的用户表uc_members.字段对应关系如下:

ucenter字段名

ecshop字段名

uid

user_id

username

user_name

password

password

email

email

regdate

reg_time

lastloginip

last_ip

lastlogintime

last_login

salt

ec_salt

只要ucenter的加盐字段salt和ecshop的ec_salt字段对应,password对应.则用户就可以使用以前的密码登录了.我没有见ecshop使用过salt字段进行加密,可能是预留的字段吧.
6.安装discuzX3.2
安装时不安装ucenter,只安装论坛部分.ucenter填写相应的信息.
补充:建议把discuz拷贝到的ecshop根目录下,并且使用同一个域名,不要给discuz使用其他域名,不然ucenter里经常通信失败.比如,ecshop在域名www.abc.com下,discuz在bbs.abc.com里,则由于未知的原因经常通信失败.我的做法是discuz位于www.abc.com/bbs下.
7.设置ucenter和discuzX3.2
登录discuz后台,在站长->ucenter设置,对以下两个选项,都设置为"是":

a.是否允许其他应用的会员在站点激活
  b.是否允许直接激活
登录ucenter的后台,在"应用管理"里,对与ecshop和discuz的两个应用,对于以下两个选项,都设置为"是":
  a.是否开启同步登录
  b.是否接受通知
8.导入discuzX3.2的用户表
此时discuz的管理员的user_id肯定在ecshop的所有用户之后.

其实这一步也可以不做.到目前为止,即使你第6步里的所有设置内容,ecshop的用户过来访问bbs,还是需要手工登录并手工激活的,只是不需要注册了.
为了解决这个烦人的问题,继续用前面的user.XLS文件,再用navicat导入discuzX3.2的用户表bbs_common_member.对应字段如下,groupid和timeoffset字段已经在第5步中增加过来了:

discuzX3.2的用户表字段

ecshop的用户表字段

uid

user_id

email

email

username

user_name

password

password

groupid

groupid

regdate

reg_time

timeoffset

timeoffset

9.导入用户其他信息

到此,正常登录已经没有问题了,对于心急的人来说,本小节可以略过.

首先把用户的qq,电话,地址等信息选择出来.联合查询sql语句如下:

  1. select u.user_id,ud.consignee,u.sex,u.msn,u.qq,u.office_phone,u.home_phone,u.mobile_phone,
  2. ud.zipcode,ud.tel,ud.mobile,
  3. u.email,ud.email,
  4. concat(pro.region_name,city.region_name,dis.region_name,ud.address) as final_address
  5. from ec_users u,ec_user_address ud,ec_region pro,ec_region city,ec_region dis
  6. where u.user_id=ud.user_id
  7. and
  8. (
  9. ud.province=pro.region_id and
  10. ud.city=city.region_id and
  11. ud.district=dis.region_id
  12. )

用navicat导出这些字段,另存为excel文件,user_data.XLS

注意上面的SQL语句并没有执行外连接查询,如果联系人地址里有不对应的记录,则选不出来.比如城市的代码为0.导出后注意一下记录总数与ec_users表的记录总数是否一致.

我之所以导出了很多电话号码,是因为ec_users表的电话号码与收货人地址ec_user_address的联系电话不一定一致,这个就需要导出来以后人工判断一下了.提供给discuzX3.2两种电话格式即可,一种是固定电话,一种是手机.

然后导入discuzX3.2的用户个人配置表bbs_common_member_profile,注意如果表中有记录先truncate table bbs_common_member_profile.然后再导入,对应字段如下:

discuzX3.2用户配置表 ecshop用户信息
uid user_id
realname consignee
gender sex
telphone 人工判断的固定电话
mobile 人工判断的手机
address final_address
zipcode zipcode

10.总结

到此,对于ecshop中已经存在的用户终于可以实现在ecshop和discuz这两个应用中,任何一个应用登录,在其他地方都可以自动登录了.但还存在以下问题:

a.ecshop新注册用户,在访问discuz时仍然需要登录激活;

b.ecshop已存在用户的电话,qq号等信息还未迁移过来,在bbs_member_profile表里对应(已解决,见第9节);

c.ecshop里用户的信息和discuz里的用户信息如何在修改时同步到对方应用.

因为对于开发人员来说,肯定不希望有意识的认识到网站商城和论坛是两套不同的应用,而是希望认为他们是一体的.所以本方案称为97%的完美解决方案.有的问题需要全面考察两个应用的设计思路后,才可能给出完美的解决办法或者代码.这就等待后人给我们继续努力啦.

参考文章:

1.xaijl 的《ecshop整合discuz教程 (100%成功率)》,链接:http://bbs.ecshop.com/thread-173080-1-1.html

最新文章

  1. win7(x64)下安装cocos2d并编译安卓项目
  2. 数据结构与算法 Big O 备忘录与现实
  3. Apache Hama安装部署
  4. TensorFlow 在android上的Demo(1)
  5. SQL Server 性能调优(一)——从等待状态判断系统资源瓶颈【转】
  6. C# HttpRequest 中文编码问题
  7. jboss部署出现MarshalOutputStream找不到错误
  8. JS验证邮箱格式是否正确的代码
  9. Java GC 日志详解(转)
  10. HDU 3068 最长回文 Manacher算法
  11. Apple Watch 1.0 开发介绍 1.4 简介 使用iOS技术
  12. Spring基础篇——通过Java注解和XML配置装配bean
  13. Blender学习
  14. 有趣的JavaScript隐式类型转换
  15. Android 回退键监听
  16. Application Server not specified
  17. python中常用的模块一
  18. 70.app上架被拒(info.plist定位参数配置)
  19. 【刷题】BZOJ 4916 神犇和蒟蒻
  20. jQuery 自定义网页滚动条样式插件 mCustomScrollbar 的介绍和使用方法(转)

热门文章

  1. JavaScript的面向对象编程(OOP)(一)——类
  2. sql语句判断默认值为getdate()的约束是否存在
  3. guava学习--ratelimiter
  4. 第一篇博客:Hello World
  5. 如何更方便地调试javascript代码
  6. RHEL 6.5 PXE 安装调试 VMWARE ESXi 5.1 安装
  7. sql 生成指定相同数量数据
  8. PHP语言基础简单整理
  9. Go语言实现简单的一个静态WEB服务器
  10. C++软件添加dump调试打印日志