关于验证码不显示,开了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);
}
?>
复制代码
需要说一点,我碰到过这种问题,就是当手动修改过配置文件后,又出现显示不正常的情况,所以当你们显示不正常的时候,那就运行运行
代码:
<?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);
}
?>
复制代码
需要说一点,我碰到过这种问题,就是当手动修改过配置文件后,又出现显示不正常的情况,所以当你们显示不正常的时候,那就运行运行
相关文章推荐
- 关于验证码不显示,开了GD库也无法显示的解决方法。清除BOM头
- X64系统IIS不支持GD库的解决方法(验证码图片无法显示)
- 关于CSS中内层使用float导致外层的背景无法显示的问题的解决方法
- 关于win8中c-free等编译器调试时无法显示输出的解决方法
- 关于chm电子书无法显示网页的解决方法
- 关于linux下jsp传值无法显示的解决方法
- 完美解决thinkphp验证码出错无法显示的方法
- 关于chm电子书无法显示网页的解决方法
- 完美解决thinkphp验证码出错无法显示的方法
- 关于注册Google Map api key的方法和解决网页无法显示的问题
- 解决2003系统无法显示验证码的方法
- ASP网站无法显示验证码的解决方法
- vs 2005 express 版本 关于debug 调试时显示 无法找到msvcr80d.dll的错误 解决方法
- 关于使用NotificationComat导致android2.3及以下版本无法显示自定义布局的解决方法.
- 关于sharepoint 2010无法显示用户中文名的解决方法和详细剖析
- 关于chm电子书无法显示网页的解决方法
- PHPCMS 验证码无法显示的解决方法
- 关于远程桌面无法启动以及桌面图标无法显示的解决方法.
- wamp5调试网站时,无法显示验证码的解决方法
- 关于无法显示该网页,弹出对话框显示"Internet Explorer无法打开Internet站点xxx,已终止操作"问题的解决方法