关于PHP的BOM头
admin
2023-06-24 19:42:13
0次

    一直用的是wamp的环境,php的版本还停留在5.3.php7都出来了,我连php5.6都还没用一把,很多相对于5.3时代的新函数和特性都还没体验到.但是碍于懒,决定装phpstudy切换到5.6的版本体验一把.

    原先的wamp环境下mysql是没有登录密码的,但是phpstudy默认有个密码,所以我需要去我目前的项目框架配置项里改一下数据库的连接密码,心想就是改个密码嘛犯不着开sublime了,直接用记事本给改了.然后打开我的项目,首页出来了,没啥问题,再点登录,哎?验证码咋不出来了?用firebug抓了一下验证码的访问地址,没问题啊.然后去验证码的类文件里关掉了header部分,然后浏览器执行验证码的url,也不报错,只是给出和以往没开header时类似的一堆乱码.这下×××了.

    网站登录没验证码,这叫什么.赶紧百度了一下.很激动,发现提这种问题的很多哎~很快就发现了一个显眼的词,BOM头.以前好像也听说过,记得是刚学php的时候,有个视频里面的老师提过,说不推荐大家用dw和记事本写php因为会生成一个BOM头,但当时根本不知道生成这个BOM头会带来什么后果.我用的是一个基于THINKPHP修改过的框架,网上反应这个问题的绝大多数都是在THINK社区,所以我觉得我的问题应该能参照他们的解决方案试一下.经过粗略扫描,发现了一个看起来比较靠谱的答案.这位大牛提供了一份代码.如下:

"; 
                 }else{ 
                     $dirname = $basedir."/".$file; 
                     checkdir($dirname); 
                 } 
             } 
         }//end while 
     closedir($dh); 
     }//end if($dh 
 }//end function 
 function checkBOM($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 "BOM found, automatically removed."; 
         }else{ 
             return ("BOM found."); 
         } 
     }   
     else return ("BOM Not Found."); 
 }//end function 
 function rewrite($filename, $data){ 
     $filenum = fopen($filename, "w"); 
     flock($filenum, LOCK_EX); 
     fwrite($filenum, $data); 
     fclose($filenum); 
 }
 ?>

    将这段代码保存成一个php文件,放到你的项目根目录中,执行一下,它会自动去除掉你当前目录下所有文件里的BOM头.验证码瞬间就刷出来了.

    这里贴一个关于BOM头的科普:解释BOM头和去掉方法

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...