1. 程式人生 > >關於驗證碼不顯示,開了GD庫也無法顯示的解決方法。清除BOM頭

關於驗證碼不顯示,開了GD庫也無法顯示的解決方法。清除BOM頭

相信很多朋友都碰到過,我今天學習驗證碼那一課的時候,自己測試時顯示失敗,而且直接訪問驗證碼的方法時,返回的是亂碼。這其實是UTF8檔案中的BOM頭在作怪,以下是我找到的一段程式碼,大家只要把它放在一個php檔案中執行即可。如:http://127.0.0.1/1.php(只需執行一次)。

    <?php 
    /*清除rom*/
    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); } ?>