您好,登錄后才能下訂單哦!
一直用的是wamp的環(huán)境,php的版本還停留在5.3.php7都出來了,我連php5.6都還沒用一把,很多相對(duì)于5.3時(shí)代的新函數(shù)和特性都還沒體驗(yàn)到.但是礙于懶,決定裝phpstudy切換到5.6的版本體驗(yàn)一把.
原先的wamp環(huán)境下mysql是沒有登錄密碼的,但是phpstudy默認(rèn)有個(gè)密碼,所以我需要去我目前的項(xiàng)目框架配置項(xiàng)里改一下數(shù)據(jù)庫(kù)的連接密碼,心想就是改個(gè)密碼嘛犯不著開sublime了,直接用記事本給改了.然后打開我的項(xiàng)目,首頁(yè)出來了,沒啥問題,再點(diǎn)登錄,哎?驗(yàn)證碼咋不出來了?用firebug抓了一下驗(yàn)證碼的訪問地址,沒問題啊.然后去驗(yàn)證碼的類文件里關(guān)掉了header部分,然后瀏覽器執(zhí)行驗(yàn)證碼的url,也不報(bào)錯(cuò),只是給出和以往沒開header時(shí)類似的一堆亂碼.這下×××了.
網(wǎng)站登錄沒驗(yàn)證碼,這叫什么.趕緊百度了一下.很激動(dòng),發(fā)現(xiàn)提這種問題的很多哎~很快就發(fā)現(xiàn)了一個(gè)顯眼的詞,BOM頭.以前好像也聽說過,記得是剛學(xué)php的時(shí)候,有個(gè)視頻里面的老師提過,說不推薦大家用dw和記事本寫php因?yàn)闀?huì)生成一個(gè)BOM頭,但當(dāng)時(shí)根本不知道生成這個(gè)BOM頭會(huì)帶來什么后果.我用的是一個(gè)基于THINKPHP修改過的框架,網(wǎng)上反應(yīng)這個(gè)問題的絕大多數(shù)都是在THINK社區(qū),所以我覺得我的問題應(yīng)該能參照他們的解決方案試一下.經(jīng)過粗略掃描,發(fā)現(xiàn)了一個(gè)看起來比較靠譜的答案.這位大牛提供了一份代碼.如下:
<?php /*清除bom*/ 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 ".checkBOM("$basedir/$file")." <br>"; }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 "<font color=red>BOM found, automatically removed.</font>"; }else{ return ("<font color=red>BOM found.</font>"); } } else return ("BOM Not Found."); }//end function function rewrite($filename, $data){ $filenum = fopen($filename, "w"); flock($filenum, LOCK_EX); fwrite($filenum, $data); fclose($filenum); } ?>
將這段代碼保存成一個(gè)php文件,放到你的項(xiàng)目根目錄中,執(zhí)行一下,它會(huì)自動(dòng)去除掉你當(dāng)前目錄下所有文件里的BOM頭.驗(yàn)證碼瞬間就刷出來了.
這里貼一個(gè)關(guān)于BOM頭的科普:解釋BOM頭和去掉方法
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。