zhangjingyu
测试期间发现,有的时候后台统计数量,和自己记录在纸上的统计数量对不上。最后发现,因为文件夹名称前面有safefile,而它似乎是一个函数,因为在同一文件(filecheck.php)的后面,其完整代码为:
function safefile($dir,$ext='',$sub=1){
global $md5_a;
$exts = '/('.$ext.')$/i';
$fp = opendir($dir);
while($filename = readdir($fp)){
$path = $dir.$filename;
if($filename!='.' && $filename!='..' && (preg_match($exts, $filename) || $sub && is_dir($path))){
if($sub && is_dir($path)){
safefile($path.'/',$ext);
} else{
$md5_a[$path] = md5_file($path);
}
}
}
closedir($fp);
}代码不理解是什么意思,但里面提到了md5和md5文件,也就是safefiles.md5。里面的内容是这样一行一行的:
6579981de477fffd96e75d8b081f40e1 ./active.php
前面是文件的md5值(不知道怎么算出来的,也不用去研究,似乎有网站可以做到),后面是对应的文件。在后台“程序文件检查”里会校验文件的md5值,如果修改过,自然这个值就有变化,所以会提示“文件被修改”。实际上这个没什么太大的意义。
经过查看在后台列出来的文件,我发现,只要是safefiles.md5里面提到的文件,后台列表里就没有(打字到这里,我也不确定我说的是否正确)。重命名这个文件,就没法检查了,会提示什么校验文件丢失什么的。那好办,只保留一行就可以了啊,也就是只保留一个文件的检验码。
经过查看,以及和原始安装文件对比,确定ck.php没有修改过,最起码文件内容是完全一样的,所以最后的safefiles.md5文件里只有一行:
1d6ae8565893957a0f900a31412a7aff ./ck.php
但在后台这个文件还是被标注了“文件被修改”。无所谓,内容没有变化,应该是修改时间不同了,所以md5不一样了,还是前面说的,没有什么实际意义,提示就提示呗。其实,完全可以删除检查safefiles.md5文件的有关代码,或者也可以修改模板文件以删除后台的“文件状态”列,因为只有ck.php会被检查,所以除了唯一它的“文件被修改”外,其余所有文件都是“未知文件”,也没有“文件丢失”。没什么实际意义,但目前也没删除,反正基本都是青一色的“未知文件”(只有一个ck.php文件被修改),而且也不是我们需要关注的地方。
实际需要查看的是我们自行添加的“状态”列,如果这里显示“文件被修改”,那我们就要核对下,是我们自己主动修改的,还是被恶意修改的,这也是这几天经过努力才实现的。