如果对dedecms不感兴趣可以不看,其实这个方法适合所有php文件的调试,其他的什么phpcms ,或者自己写的php文件都可以用这个方法。我是用的dedecms建的网站,就以他为例来说明好了。
在压缩包中有个文件夹"dedecms调试" ,里面有三个文件,一个是mydb.php 文件,一个是mydb2.php文件,最后一个是mylog.php文件。这最后一个mylog.php文件是我根据网上的代码写的统计访问人数的,算个小小小插件吧。mydb.php和前面提到的TP框架调试时用到的mydb.php文件的内容大部分都是一致的,只是在备份文件的处理上有些不同罢了,mydb2.php是调试时所需要的中间文件,可以不用多管。
将mydb.php和 mydb2.php放到dedecms的根目录就可以了,我这里就用他们对 mylog.php文件进行调试作为说明,我把mylog.php文件放到 dedecms的member目录下,然后修改了主页模板,弄出一小片用于统计人数的区域来,通过ajax方法和mylog.php进行交互获取人数信息。
打开mydb.php文件,在最后几行如下所示:
MyDb::$path_alias=array('make'=>'./dede/makehtml_homepage.php',
'mylog'=>'./member/mylog.php',
'dedetag'=>'./include/dedetag.class.php',
'chanu'=>'./include/channelunit.func.php',
'mainconfig'=>'./dede/config.php',
'media_add'=>'./dede/media_add.php',
);
//正在使用的文件为: mylog
//MyDb::mydb2('view','dos&xxoo',array(170));$mydb_ref_ 分隔符:^^& 注意填写array里的值时使用单引号,如 array(1=>'#$mydb') 如果写成 array(1=>"#$mydb"); 那么$mydb就不会作为字符串解析,就会出错咯!
//MyDb::huifu('mynews');
//MyDb::huifu('mylog');
MyDb::mydb2('mylog','dos&xxoo',array(5=>'!^$_COOKIE',9=>'@setcookie'));
可以看得出,和前面提到的TP框架的调试差不多,先在 MyDb::$path_alias 数组中注册一个目标文件的别名,我这里是mylog,对应的键值就是目标文件相对于mydb.php的相对路径,这里就是 ./member/mylog.php 。然后用MyDb::mydb2函数对目标文件进行调试,里面涉及到的参数和TP框架调试时是一样的。 比如上面的例子就是调试mylog.php文件的第五行的$_COOKIE变量,以及调试第九行的setcookie函数的返回值。在写mydb2函数时,最好把目标文件的别名写到上面的注释:"正在使用的文件为" 后面,这样,后面恢复的时候就知道哪些需要恢复了。
在mydb.php文件中写完这些调试信息后保存,打开浏览器输入mydb.php的url路径,假设是:http://localhost/mydb.php 然后执行哈,当浏览器提示写入某某文件成功后,目标文件就被插入调试函数了,同时在mydb.php文件所在的目录下会出现两个目录:一个是备份用的bak目录,一个是存放中间解析文件的parse目录,这些以前都提到过。然后,打开dedecms的主页,当ajax访问mylog.php文件时,就会通过前面在目标文件中插入的调试函数mydb_logval 将 $_COOKIE和 setcookie的返回值记录到 message.php文件中(message.php文件也在mydb.php所在的目录下)。
在进行完调试后,可以将mydb2函数注释掉,再在huifu函数中写入要恢复的目标文件的别名,由于前面在注释"正在使用的文件为" 后面 加入了别名,此时可以将他们一起去掉。最后保存mydb.php文件,并在浏览器中输入类似于 http://localhost/mydb.php的url后,在浏览器显示“恢复成功”的字样后,就OK了。其他文件的调试都是一样的。所有调试的内容都说完了。这回不用说休息了,直接说再见咯。等等,再见之前,还有个事,在首页的软件区里除了 TP变量调试插件的下载外 还有个 TP变量调试插件使用手册 ,这个手册是站长用 友益文学软件 制作的电子说明书。
(责任编辑:zenglong)