onethink程序在php5.3空间安装后验证码不显示
    文章作者:恒爱网络 阅读次数:6363 发布时间:2013-12-29

    某客户在我司PHP5.3空间安装 onethink程序后,后台验证码不显示,求助予以解决。

    检查后发下 GD库运作正常,尝试清理bom后,发现验证码显示了,看来果然是bom引发的问题。


    复制后保存为PHP文件放到onethink程序根目录下 然后通过浏览器访问此页面就可以了。

    清除bom的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 ".checkBOM("$basedir/$file")." 
    "; 
         }else{ 
          $dirname = $basedir."/".$file; 
          checkdir($dirname); 
         } 
        } 
       } 
     closedir($dh); 
     } 
     } 
     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._http://www.hengidc.com"); 
       } else { 
        return ("BOM found."); 
       } 
     } 
     else return ("BOM Not Found."); 
     } 
     function rewrite ($filename, $data) { 
     $filenum = fopen($filename, "w"); 
     flock($filenum, LOCK_EX); 
     fwrite($filenum, $data); 
     fclose($filenum); 
     } 
     ?>