介绍:最近发现很多源码或者说是网站模板因为不当修改(如直接用记事本在相关文件进行修改)相关的网站源码文件,导致产生BOM问题,最终造成网站的注册页,登录页页面验证码无法加载又或者不显示等问题。站长就此给大家一个解决办法,希望大家不必在互相求助,自行解决遇到的问题。这里建议大家,如需要修改某文件可以用Notepad++格式中选择无BOM格式编码就行修改。当然,你还觉得麻烦的话,直接下载已经编辑好的BOM.PHP文件


这里针对BOM问题,可以建立一个DOM.php
文件,放至网站的根目录,里面存入以下自动检测修复代码
if (isset($_GET['dir'])){ $basedir=$_GET['dir']; }else{ $basedir = '.'; } $auto = 1; checkdir($basedir); function checkdir($basedir){ if ($dh = opendir($basedir)) { while (($file = readdir($dh)) !== false) { if ($file != '.' && $file != '..'){ if (!is_dir($basedir."/".$file)) { echo "filename: $basedir/$file ".check<a href="http://www.goodziyuan.com/archives/tag/bom" title="查看更多关于BOM的文章" target="_blank">BOM</a>("$basedir/$file")." "; }else{ $dirname = $basedir."/".$file; checkdir($dirname); } } } closedir($dh); } } function check<a href="http://www.goodziyuan.com/archives/tag/bom" title="查看更多关于BOM的文章" target="_blank">BOM</a> ($filename) { global $auto; $contents = file_get_contents($filename); $charset[1] = substr($contents, 0, 1); $charset[2] = substr($contents, 1, 1); $charset[3] = substr($contents, 2, 1); if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) { if ($auto == 1) { $rest = substr($contents, 3); rewrite ($filename, $rest); return ("<span style="color: red;"><a href="http://www.goodziyuan.com/archives/tag/bom" title="查看更多关于BOM的文章" target="_blank">BOM</a> found, automatically removed._<a href="http://www.hengidc.com">http://www.hengidc.com</a></span>"); } else { return ("<span style="color: red;">BOM found.</span>"); } } else return ("BOM Not Found."); } function rewrite ($filename, $data) { $filenum = fopen($filename, "w"); flock($filenum, LOCK_EX); fwrite($filenum, $data); fclose($filenum); }
本文隐藏内容 登陆 后才可以浏览