药学吧搬家了,发现帝国生成的文件为空

时间: 2012-02-10 / 分类: 网站制作技术 / 浏览次数: 4,002 views / 0个评论 发表评论

今天发现药吧访问不了,一问,那边说被人黑了,所有数据包括备份数据全被删除了,没办法恢复
不过幸好前段日子药吧被黑,所以我想更换成帝国CMS,已经把数据弄回本地并转换好了
就是新模板没制作好
于是我向空间商提出换成香港空间,他答应了,很快就开好了
我上传数据后发现个大问题,帝国CMS生成的某些文件是空的
让我非常郁闷,因为是第一次用,困难重重啊
我是按照文章ID生成文件的
然后我本地生成了一次,发现一样存在这个问题
然后我开始一步一步查找原因
生成链接
http://127.0.0.23/e/admin/ReHtml/DoRehtml.php?from=ReHtml%2FChangeData.php&tbname%5B%5D=news&tbname%5B%5D=download&tbname%5B%5D=photo&tbname%5B%5D=flash&tbname%5B%5D=movie&tbname%5B%5D=shop&tbname%5B%5D=article&tbname%5B%5D=info&classid=0&startday=&endday=&selectday=2012-02-10&retype=1&startid=14999&endid=15031&havehtml=1&Submit6=%BF%AA%CA%BC%CB%A2%D0%C2&enews=ReNewsHtml
查看代码找到
../ecmschtml.php?enews=ReNewsHtml&classid=0&from=ReHtml/ChangeData.php&retype=1&startday=&endday=&startid=14999&endid=15031&havehtml=1&reallinfotime=1328811992&tbname=news
查找ecmschtml.php里面是调用e/class/chtmlfun.php的ReNewsHtml函数
通过查找这个函数发现了真正的生成文件函数
GetHtml($r,”,1);//生成信息文件
这个函数在e/class/functions.php
通过测试我发现问题处在没办法获取模板
问题出在约2233行的这句
$add[newstempid]=$add[newstempid]?$add[newstempid]:$class_r[$add[classid]][newstempid];
$add[newstempid]为1就能生成,为0就不行,因为默认模板的ID肯定大于0的
$class_r这个数组里的参数决定了$add[newstempid]
查找$class_r,他在\e\data\dbcache\class1.php和e\data\dbcache\class.php里
一看就知道是缓存,肯定是修改栏目才会更新
然后我仔细对比了一下不能生成的文档的栏目,发现原来默认模板没设置好
让我百思不得其解的是,貌似不选会提示的啊,当时究竟是如何提交成功的
还有一点,生成空白文件,ECMS竟然没提示,幸好我发现得早,要不会给访客带来极为不好的印象
为了避免这种情况的再次发生,我自己在2233行后添加了提醒
if($add[newstempid]<1) { echo "文档".$add[filename]."分类ID".$add[classid]."的模板没设置好,没办法生成"; exit(); } 这样也许好一些

发表评论

您的昵称 *

您的邮箱 *

您的网站