您的位置:首页 > 其它

关于验证码不显示,开了GD库也无法显示的解决方法

2017-12-08 11:48 309 查看
相信很多朋友都碰到过,我今天学习验证码那一课的时候,自己测试时显示失败,而且直接访问验证码的方法时,返回的是乱码。这其实是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); 

}

?>

复制代码

需要说一点,我碰到过这种问题,就是当手动修改过配置文件后,又出现显示不正常的情况,所以当你们显示不正常的时候,那就运行运行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: