如何实现dede数据和Discuz!数据互通
Dedecms55整合UChome、Discuz实现同步登陆安装说明:
一、环境搭建
DedeAMPZ 是直接整合PHP + Apache + MySql 的服务器环境管理软件。主要具有如下特点:
1、支持php4、php5、MySql4、MySql5、Apache22、Zend Optimizer-330;(完整版)。
2、安装使用十分简单,并支持在php4与php5中切换;
3、经过专业的处理后,使你配置apache+php的站点更简单;
本地测试,先安装DedeAMPZ。
二、安装dedecms
将upload文件夹下所有文件拷贝到DedeAMPZ/WebRoot/Default目录下。
打开浏览器,在地址栏理输入http://localhost/install/indexphp后运行。
勾选“我已阅读并同意协议”后点击“继续”,进行安装。
将所有模块勾选。
数据库设置:数据库用户,root;密码:123456,这个和前面的一致。
注意:
对于“数据库主机”、“数据库名称”、“数据库用户”及“数据库密码”,如果是在服务器上安装,这些是你买空间时空间商提供给你的,要注意后面的几个安装过程都要求填写这些,一定不要填错了,否则是无法安装的。
管理员admin,密码admin。点击“继续”,进行下面的安装。
安装完成以后在浏览器地址栏输入http://localhost/dede/loginphp运行,进入dedecms后台登陆界面,用户名、密码就是你在管理员初始密码栏目下设定的。
进入后台后打开“生成”栏目,点击“更新主页HTML”生成网站主页,然后退出后台管理界面。再打开浏览器,在地址栏理输入http://localhost/ 运行就可以看到dedecms默认的网站主页。
三、UCenter的安装
下载ucenter,将其文件夹更名为ucenter,将ucenter文件夹放在DedeAMPZ/WebRoot/Default目录下。
打开浏览器,在地址栏理输入http://localhost/ucenter/install/indexphp运行,即可进入UCenter的安装向导界面。
点击“我同意”用户协议。
以上是进行环境以及目录、文件权限检查之类的,这些就不要操心啦,电脑会给你做好的,只要每个项目后面都打了勾,要做的就是点击“下一步”了。
数据库服务器、数据库名、数据库用户、密码等都是和前面的相同,注意UCenter创始人的密码一定要记好,以后是要用到的。
成功安装后,点击“安装用户中心成功,点击进入下一步”按钮,进入Ucenter用户管理中心登陆界面,可以输入你刚才设定的UCenter创始人的密码,进入UCenter用户管理中心。
四、Uchome的安装
下载Uchome,将其文件夹更名为Uchome,将Uchome文件夹放在DedeAMPZ/WebRoot/Default目录下
先把Uchome文件夹下的confignewphp文件名改为configphp。然后打开浏览器,在地址栏理输入http://localhost/uchome/install/indexphp运行,即可进入UChome的安装向导画面。
点击“接受授权协议,开始安装UCenter home”按钮开始下一步安装。
UCenter的URL:http://localhost/ucenter 如果是在服务器上安装,把localhost换成你的空间域名。创始人密码即使你上面安装Ucenter时所设定的密码。
Ucenter注册成功,点击“进入下一步”按钮继续安装工作。
数据库服务器、数据库名、数据库用户、密码等都要和前面的一致,填好后点击“设置完毕,检测我的数据库配置”进行数据库配置检测。
数据库配置成功,继续下面的安装。
在这里可以设定管理员的用户名和密码,开通管理员的空间设用户名:admin,密码:admin。
然后可以进入管理员空间和进入管理平台了。
五、Discuz!安装
下载discuz,将其文件夹更名为BBS,将BBS文件夹放在DedeAMPZ/WebRoot/Default目录下。
打开浏览器,在地址栏理输入http://localhost/bbs/install/indexphp运行,即可进入Discuz!的安装向导界面。
以上是进行环境以及目录、文件权限检查之类的,这些仍然是不要操心的啦,电脑会给你做好的,只要每个项目后面都打了勾,要做的就是点击“下一步”就好了。
填上你的UCenter创始人密码,Ucenter的URL自动生成的,已经不需要劳你的大驾啦,点击“下一步“按钮继续。
把数据库用户名改成root,密码即是前面设的123456。管理员帐号admin密码admin。 注意服务器上安装时数据库服务器、数据库名、数据库用户、密码等都要和前面的一致,填好后点击“下一步”进行数据库配置检测及安装。
好了,至此我们要暗转的软件全部安装完成。
六、软件的整合
现在我们已经完成了dedecms、ucenter、uchome、discuz!的安装了,下面要进行的工作就是把dedecms、discuz!及uchome通过ucenter整合到一起以实现资源整合并且使三个网站的会员要能够实现同步登录及退出。
首先,我们通过浏览器访问 http://localhost/ucenter/indexphp,打开ucenter用户管理中心登录界面,输入你的创始人密码后进入ucenter用户管理中心。
进入管理中心后,我们点击“应用管理”后可以发现,uchome、discuz!已经与ucenter“通信成功”了。 这是因为在安装uchome、discuz!的时侯,安装程序已经帮助我们配置好了,但是别高兴太早啊,呵呵,仔细看看,找到dedecms了没有?没有。怎么办呢,这时需要通过dedecms后台中的ucenter模块进行Ucenter配置。
然后,在浏览器地址栏输入http://localhost/dede/loginphp,打开后台管理登录界面,输入密码后进入dedecms后台管理。
dedecms后台管理界面的左侧导航栏,点击“模块”标签,注意下面的“UCenter模块”。
点击“UCenter配置”,进入以下页面。
“服务端地址“填:http://localhost/ucenter (本地机),创始人密码即是你在安装UCenter时设定的创始人密码;服务端IP地址填你的Ucenter安装的空间IP(本地机填127001),输入后点“确认安装”。出现安装成功提示。
退出dedecms管理后台,再次进入UCenter用户管理中心,这时我们会发现在“应用管理”中多了一项“我的网站”,并且显示的是“通信成功”了。
我们再通过浏览器访问http://localhost/uchome/indexphp, 用管理员的账号进入Uchome首页,点击“设置”进入另外一页,再点击右上角的“高级管理”,输入密码后点击“进入平台”进入高级管理平台。
在左侧导航栏的“高级设置”中找到一项“UCenter应用”点击进入。
在这里我们可以看到我们加入的三个应用,分别点击三个应用下面的“提交更新“。退出管理界面,现在我们再回过头去测试一下看就可以同步了。
七、经验总结及疑问
如果没有做到Dedecms、UChome、Discuz!中同时登录及退出的问题其关键就是在uchome中的“ucenter应用”中没有“提交更新”。
有时候安装dedecms、uchome或ucenter出现问题安装不了或出错等等,有的很多就是环境没有搭载好,所以我建议就安装dedecms提供的DedeAMPZForServer套件,至少在服务器的搭载上我们不需要花费太多的精力。
另外注意的是UCenter的配置。比如“通信密钥”是否一致。这个一般是导致 UCenter 与Dedecms、UChome、Discuz!等通信失败的主要原因之一。这个密钥是可以自己随便写的,但要保证 UCenter 与 DIscuz 的密钥一致。又比如“ID”。查看 UCenter 后台的应用 ID 是否与Dedecms、UChome、Discuz!等后台的 ID 一致,如不一致,请修改各个应用后台的"UCenter 应用 ID"。这个也是导致 UCenter 与 DIscuz 通信失败的主要原因之一。关于UCenter的配置等这一点可以参考UCenter官方提供的说明手册。
首先我们先来了解下 Ucenter登录步骤
1、用户登录discuz,通过loggingphp文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证。
2、如果验证成功,将调用位于uc_client下clientphp文件中的函数uc_user_synlogin,在这个函数中调用 uc_api_post('user', 'synlogin', array('uid'=>$uid))。
3、然后这个函数后向Ucenter的indexphp传递数据,indexphp接受传递的数据,获得model为user,action为synlogin的值。
4、然后Ucenter的indexphp调用control目录下的userphp类中的onsynlogin方法,通过foreach循环,以javascript的方式通知uc应用列表中开启同步登陆的应用进行同步登录;即通过get方式传递给各个应用目录中api下的ucphp一些数据。
5、ucphp接收通知并处理get过来的数据,并在函数synlogin(位于ucphp中)通过函数_authcode加密数据(默认以UC_KEY作为密钥),用函数_setcookie设置cookie。
6、各个应用用对应的密钥解码上面设置的cookie,得到用户id等数据;通过这个值来判断用户是否经过其它应用登录过,从而让用户可以自动登陆。
应用程序的loggingphp ------>uc_client中的clientphp------>Ucenter------>应用程序中api/ucphp
其实Ucenter实现同步登陆的原理就是cookie,一个应用登陆成功之后,向Ucenter传递数据,让Ucenter通知其他的应用也设置cookie,这样用户在访问其他应用的时候通过已经设置好的cookie实现自动登陆。了解了Ucenter的同步原理,再遇到无法同步登陆,或者开发一些与UCenter接口的时候就会容易很多。
大致步骤 首先我们要先安装 ucenter 然后把uc_client 这个文件夹复制到自己的项目里面去 然后呢在配置几个文件
clientphp相当于函数库
ucphp相当于回调文件
还有一个 configincphp 是配置文件
当你有2个应用都设置了同步登陆之后 当你登陆一个应用 然后执行
[php] view plain copy
include '/configincphp';
include '/uc_client/clientphp';
$usernames="feiye";
$passwords="789123";
list($uid, $username, $password, $email) = uc_user_login($usernames, $passwords);
if($uid > 0) {
setcookie("username",$username,time()+intval(243600));
echo uc_user_synlogin($uid);
echo '登录成功';
} elseif($uid == -1) {
echo '用户不存在,或者被删除';
} elseif($uid == -2) {
echo '密码错';
} else {
echo '未定义';
}
uc_user_synlogin() 这个函数 代表着 要同步登陆到其他所有开启同步登陆的函数 uc自己会在后台把所有开启同步登陆的应用都给循环遍历一遍 然后 在页面上输出
[html] view plain copy
<script type="text/javascript" src="http://1270070/api/ucphptime=1374540644&code=14fdIufn%2B2YwkQlN9P07FEHOfZvDJupvgBgaRPn7R0DJmbEwCb23vKwO1uaeybLq3HZhtokoZrnqu7NGi09jzs684drFCbLDiSpKhk6P50MftBRA3vp4yIswhrPMl1dXo5ajB7CVZ9F8EI%2BkdFfq0E0rdyeRkuz8goeHhg" reload="1"></script>
[html] view plain copy
<script type="text/javascript" src="http://1270071/api/ucphptime=1374540644&code=07a91g8SepQwwfA3C1uN1sPhC4v6yuER1jFbVTQMK%2BQZmTkjwOz8X%2B8rWgNmKdhlXe9XXVQqAkDjN26CK6BMA19ZpLoiSW4wuNnxHAB9xXLt2VExuyf03MnEHAC%2BUdjwb58sbXGcYUpM4Bmzdm3Q92ObSp0Kk2qCd12fqg" reload="1"></script>
类似这种的js代码 就是发送给每个开启同步登陆的应用 然后 每个开启同步登陆的应用 的 回调文件 ucphp 接受到后 会进行解密 解密好后 其实 你就可以自己来写代码了 这个ucphp回调文件的代码不一定非要按照他们的格式来写 你也可以自己写你自己的代码 比如说我就是根据session来做同步登陆的
[php] view plain copy
function synlogin($get, $post) {
$uid = $get['uid'];
$username = $get['username'];
if(!API_SYNLOGIN) {
return API_RETURN_FORBIDDEN;
}
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
setcookie('gwyy',$username,time()+3600,'/','1270071');
_setcookie('Example_auth', _authcode($uid"\t"$username, 'ENCODE'));
$_SESSION['username'] = $username;
$_SESSION['uid'] = $uid;
}
function synlogout($get, $post) {
if(!API_SYNLOGOUT) {
return API_RETURN_FORBIDDEN;
}
//note 同步登出 API 接口
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
_setcookie('Example_auth', '', -86400 365);
unset($_SESSION['username']);
unset($_SESSION['uid']);
session_destroy();
}
这样 当用户刷新了别的应用页面之后 就自动登陆了
你只能最少花几千块钱找人二次开发了,不晓得你非要整合干什么,现在DZX都32版本了,wordpress的什么功能他没有,再从负载上来说,wordpress已经不是博客系统了跟discuz消耗的资源差不多。
建议直接在discuz开门户,开群组,抛弃wordpress,如果你非要同步评论的话技术上的工作量可是不小。
要么反过来抛弃discuz,wordpress也有BBS插件和buddypress可以选择,建议直接buddypress
的用户整到一起。且以后都相关联!
这个如果自己做的时候比较麻烦要分析各程序数据库的结构。用户表结构等。
建议你参考一下UCenter程序。是DISCUZ旗下的一款产品。现在非常流行!
产品介绍及下载地址:
介绍:
提供同步登录、退出、注册等相关接口,可以实现用户使用一个账号,在一处登录,全站通行。提供短消息相关接口,可以实现用户在不同应用之间收发短消息。提供 Feed 动态相关接口,可以实现记录用户在各应用中的行为,并且在 UCenter Home 等应用显示。提供好友相关接口,可以实现各应用好友互通。
补充:
这个软件只针对PHP的。
如果说原理一个是利用接口。二是共利一个用户表!
三如果是需要导入的话。首先要把两个用户表对应一下导入进来后可直接用!!
下载Discuz!社会化登录插件
discuz!X15插件 插件版本:11 更新时间:2011年6月1号 点击下载
discuz!X2插件 插件版本:11 更新时间:2011年6月1号 点击下载
discuz!72插件 插件版本:10 更新时间:2011年4月16号 点击下载
discuz!X15插件 Demo网站演示 http://demodenglucc/Discuz_X15/forumphp
discuz!X2插件 Demo网站演示 http://demodenglucc/Discuz_X20/forumphp
discuz!72插件 Demo网站演示 http://demodenglucc/Discuz72/
产品介绍
1
广泛的社会化媒体登录入口
灯鹭Discuz!插件支持QQ、新浪微博、人人网、开心网、豆瓣、谷歌、雅虎、支付宝、淘宝、网易、腾讯微博、搜狐微博、MSN,天涯,百度15家媒体帐号登录到您的网站。
2
登录同步获取用户资料
论坛可以获得用户的用户名、头像、性别、年龄、所在地等信息。在用户首次登录时,同步到用户的个人中心。
3
同步内容到合作媒体网站
可以在发帖和日志的同时,发布一条新鲜事或者微博到合作媒体网站。可以同步至QQ空间、腾讯微博、新浪微博、人人网、网易微博、搜狐微博。
4
绑定Discuz论坛帐号
合作媒体帐号可以绑定Discuz论坛帐号,以及解除绑定。网站主可以在Discuz后台控制绑定权限,用户绑定论坛帐号,不仅可以使用论坛帐号方便登录,依然可以使用同步内容到合作媒体网站功能。
可以将两个discuz论坛共用一个ucenter:
1、安装第一个论坛,用admin账户登录后台,进入ucenter(一般是创始人账户)
2、点击应用管理——添加应用,按照内容填写内容,然后安装新论坛即可
3、应用管理最下面有个是否同步登录,选择“是”
0条评论