如何实现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官方提供的说明手册。
用webzip将这个页面下载下来,打开编辑代码将其中的用户登录表格post id 等、所有可以修改的都替换成你网站的参数,上传到你空间,命名login_newhtm
首改网站首页注册地址 让他跳转到login_newhtm上
必须至少具备如下技能:
1) 能够理很好理解MVC构架的原理(虽然DZ不是MVC架构的)
2) 扎实的PHP基础,熟悉结构化程序,OOP程序的写法及应用
3)熟悉MYSQL就用,掌握SQL语言,懂SQL优化者更佳
4) 熟悉使用Discuz!的各项功能
一) Discuz!的文件系统目录
注:想搞DZ开发,就得弄懂DZ中每个文件的功能。
a) Admin:后台管理功能模块
b) Api:DZ系统与其它系统之间接口程序
c) Archiver:DZ中,用以搜索引擎优化的无图版
d) Attachments:DZ中 ,用户上传附件的存放目录
e) Customavatars:DZ中,用户自定义头像的目录
f) Forumdata:DZ缓存数据的存放目录
g) Images:DZ模板中的存放目录
h) Include:DZ常用函数库,基本功能模块目录
i) Ipdata:DZ统计IP来路用的数据
j) Plugins:DZ插件信息的存放目录
k) Templates:DZ模板文件的存放目录
l) Wap:DZ无线,Wap程序处理目录
二) 必须记熟Discuz!数据库设计的每个表的功能,每个表中每个字段的功能。
关于DZ数据库设计文档,请参阅DZ相关的项目
三) Discuz!的流程控制
a)
后台流程控:DZ后台所有的功能,均需要注册到admincpphp文件,每个功能都至少有一个或一个以上的Action(动作),在
admincpphp中,可以定义Action的执行权限,分别为:“admin==1”管理员,或“admin==2
admin==3”超级版主和版主,每个Action对应一个脚本文件,脚本文件的命名为actionincphp(incphp),并存放在
admin目录下,如执行:admincpphpaction=dodo,相当于执行admin目录下的dodoincphp文件
b) 前台流程控制:前台的流程控制比较简单:流程是自由的,如:
首页:indexphp
会员注册:registerphp;
会员登录:loggingphp
发贴程序:postphp
会员信息:memberphp
论坛内容:forumdisplayphp
查看贴子:viewthreadphp
…大部分功能,此处不一一列出…
c) DZ根目下的configincphp属于整个DZ系统的配置文件
四) Discuz!的数据处理过程
a) DZ对mysql的数据库操作处理全部封装在dbstuff(db_mysqlclassphp)类中
b) 所在的外部数据均通过“daddslashes()”初步过滤,然后再过滤,再根据需要处理
五) Discuz!的显示控制(网站多样式风格输出)
a) 显示层就是大家通常所看到的网站风格了。DZ中每套风络分别在templates及images下对应一个风格文件的存放目录。网站风格的制作,请参阅详细的DZ风格制作文档
b) DZ网站风格文件处理的原理:其实很简单,DZ使用templatefuncphp中的parse_template()以PHP正则运算把htm模
文件中的模板标签,转换成了PHP代码,并根据styleid保存在forumdata/templates下,这个有点像Smarty中的技术。
六) DZ中的语言处理
a) 前台及后台中、英语言的实现,均是把语句定义成了语变量,然后在模板输入,语句变量的赋值,均放在模板目录中的langphp文件中,DZ在生成网站风格时就加载了这相应的语言包。
七) DZ如何处理用户信息(存取、计算、更新过程)
新手要做二次开发,都必须掌握这数组中,每个数组元素的意义。
a) DZ的基本信息,如用户信息,Session信息存在如下变量中:
a) $_DCACHE
b) $_COOKIE
c) $_DCOOKIE
d) $_DSESSION
e) $_DPLUGIN
b) 可以通过print_r($GLOBALS),打印全部变量
八) DZ中缓存处理机制
a) DZ中缓存处理过程都放在“cachefuncphp”中,DZ的缓存处理比较简单,其原理是把一个数组转换成了PHP代码,并保存在缓存目录下,大家可打开缓存文件查看便知。
b)使用方法:如果在新开的功能中,需要缓存某部分数据,基本上就是:
1)定义并注册缓存名字。
2)从数据读取相应的数据。
3)数据在写入缓存前作相应处理。
4)最后写入缓存。
具体操作,可以看文件中的代码,做相应的修改即可
九) DZ中模板处理机制
a) DZ独创的模板处理技术,类似于Smarty中的模板处理,只是具体算法,过程不同,Smarty是一种重型模板引擎方案。其原理都是把模板中的变量转换成相应的PHP代码,这个过程实际是模访JAVA中的一次编译,多处运行。
十) DZ中权限处理机制
a) 对于DZ中前台的每相action都有$discuz_action定义,DZ根据用户所在的用户组来判定用户是否具有相应操作$discuz_action的权限。至于后台的权限权验证,则更简单了,依据“admin==1”来确定的
十一) DZ中如何实现URL静态化
a) DZ中的静态有两法,只要懂ReWrite规划的朋友,一看就知。
十二) DZ独创的HTML编辑器,如何截取并使用,如果进行Discuz!代和Html代码的转换
a) 这也算是DZ比较牛的一项技术了,在早期版中,因DZ编辑器的不足,使得很多用户放弃了DZ。
实现原理:通过JS把用的一些操作转换成了DZ的bbcode代码。这样子提交了安全性,将带有bbcode代码的内容存入数据,在用户打开页页时,又把bbcode代码转换成html代码
看discuz用户登录采用的什么方式, cookies还是session 还是服务器缓存等等
自己用户登录时采用相应的方法就行。
或者把discuz中的登录代码在自己的网站中执行一遍,当然,你的用户数据相应在discuz中的用户表中存在
或许你和discuz共用用户表也行
php中定时计划任务的实现原理:
当 PHP 脚本正常地运行 NORMAL 状态时,连接为有效。当远程客户端中断连接时,ABORTED 状态的标记将会被打开。远程客户端连接的中断通常是由用户点击 STOP 按钮导致的。当连接时间超过 PHP 的时限时,TIMEOUT 状态的标记将被打开。
示例代码:
<php
ignore_user_abort(true);set_time_limit(0);
date_default_timezone_set('PRC'); // 切换到中国的时间
$run_time = strtotime('+1 day'); // 定时任务第一次执行的时间是明天的这个时候
$interval = 360012; // 每12个小时执行一次
if(!file_exists(dirname(__FILE__)'/cron-run')) exit(); // 在目录下存放一个cron-run文件,如果这个文件不存在,说明已经在执行过程中了,该任务就不能再激活,执行第二次,否则这个文件被多次访问的话,服务器就要崩溃掉了
do {
if(!file_exists(dirname(__FILE__)'/cron-switch')) break; // 如果不存在cron-switch这个文件,就停止执行,这是一个开关的作用
$gmt_time = microtime(true); // 当前的运行时间,精确到00001秒
$loop = isset($loop) && $loop $loop : $run_time - $gmt_time; // 这里处理是为了确定还要等多久才开始第一次执行任务,$loop就是要等多久才执行的时间间隔
$loop = $loop > 0 $loop : 0;
if(!$loop) break; // 如果循环的间隔为零,则停止
sleep($loop);
//
// 执行某些代码
//
@unlink(dirname(__FILE__)'/cron-run'); // 这里就是通过删除cron-run来告诉程序,这个定时任务已经在执行过程中,不能再执行一个新的同样的任务
$loop = $interval;
} while(true);
0条评论