织梦教程:教你PHP批量去除bom头代码的小工具教程!

皇族网 595 0

在 aitecms 群里有网友抱怨了好几天说本地的验证码一直无法显示,后来听说解决了,问其如何解决的,说是去除了文件 bom 就好了。后来百度到一篇文章也说 dedecms 的验证码不能显示,某次解决了文件 bom 后竟然好了,于是本篇文章就显得很重要了。

网上转载的,出处已经不可考了,不知道原作者是谁,在这里先向作者表示感谢。

代码如下:

<?php
02    /*
03     * PHP批量去除bom头代码的小工具
04     * http://blog.kilvn.com/
05     */
06 
07    if (isset($_GET['dir'])){ //设置文件目录
08        $basedir=$_GET['dir'];
09    }else{
10        $basedir = '.';
11    }
12 
13    $auto = 1;
14 
15    checkdir($basedir);
16 
17    function checkdir($basedir){
18        if ($dh = opendir($basedir)) {
19            while (($file = readdir($dh)) !== false) {
20                if ($file != '.' && $file != '..'){
21                    if (!is_dir($basedir."/".$file)) {
22                        echo "filename: $basedir/$file ".checkBOM("$basedir/$file")." <br>";
23                    }else{
24                        $dirname = $basedir."/".$file;
25                        checkdir($dirname);
26                    }
27                }
28            }
29        closedir($dh);
30        }
31    }
32 
33    function checkBOM($filename) {
34        global $auto;
35        $contents = file_get_contents($filename);
36        $charset[1] = substr($contents, 0, 1);
37        $charset[2] = substr($contents, 1, 1);
38        $charset[3] = substr($contents, 2, 1);
39        if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
40            if ($auto == 1) {
41                $rest = substr($contents, 3);
42                rewrite ($filename, $rest);
43                return ("<font color=red>BOM found, automatically removed.</font>");
44            } else {
45                return ("<font color=red>BOM found.</font>");
46            }
47        }
48        else return ("BOM Not Found.");
49    }
50 
51    function rewrite($filename, $data) {
52        $filenum = fopen($filename, "w");
53        flock($filenum, LOCK_EX);
54        fwrite($filenum, $data);
55        fclose($filenum);
56    }


保存为一个php文件,放到网站根目录下,可以遍历文件夹并自动清除bom,对文件绝对安全,亲测过的。


标签: 建站技巧 网络教程

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~