首先来看下,在网上搜索出来的解决方案有如下几条:9OM七七世界-网站建设|UI设计|人资系统|二次开发
1、修改一下评论表单,然后重新提交就可以了这个方法我确实第一次试了,管用,但是后面就不行了,具体是为什么我在后面会讲9OM七七世界-网站建设|UI设计|人资系统|二次开发
2、空间不支持GD库,让服务商解决一下9OM七七世界-网站建设|UI设计|人资系统|二次开发
3、去掉<?php后面的空格,和?>前面的空格9OM七七世界-网站建设|UI设计|人资系统|二次开发
4、由编码引起的9OM七七世界-网站建设|UI设计|人资系统|二次开发
5、由BOM头引起的9OM七七世界-网站建设|UI设计|人资系统|二次开发
再运行,看下 /e/showkey/index.php 文件9OM七七世界-网站建设|UI设计|人资系统|二次开发
我们知道当A页面include B页面的时候,A页面可以直接使用B页面里面的函数和变量,当B页面include C页面的时候,A页面即使没有include C页面,但是include B页面,也同样能在A页面中使用C页面里的函数和变量,发现connect.php页面引用了config.php,用NotePad++打开e/class/config.php页面,发现config.php页面并不是无BOM的UTF-8编码格式,而是带了BOM的,忽然想到,之前使用了记事本打开并修改过参数的,就是这个时候记事本默认添加了BOM头,使用NotePad++将config.php将其转换成无BOM的文件然后上传,刷新一下,OK!验证码出来了!真是一个小BOM浪费了半天的时间。9OM七七世界-网站建设|UI设计|人资系统|二次开发
现在来说一下如何快速判断是什么原因不显示验证码9OM七七世界-网站建设|UI设计|人资系统|二次开发
1、GD库没有打开9OM七七世界-网站建设|UI设计|人资系统|二次开发
一般的虚拟主机都会将GD库打开的,如果GD库没有打开,那么访问http://你的域名/e/showkey/index.php就会出现一堆乱码,可以告知空间提供商让他们帮助开启,如果是自己的主机,那么打开php.ini找到extension=php_gd2.dll将前面的“;”号去掉,重启APACHE或IIS就可以,以前的PHP版本是extension=php_gd.dll。或者你可以将以下代码另存为php文件传到你空间里,如果有GD标题就说明开启了GD库。9OM七七世界-网站建设|UI设计|人资系统|二次开发
-------------------------9OM七七世界-网站建设|UI设计|人资系统|二次开发
<?php9OM七七世界-网站建设|UI设计|人资系统|二次开发
phpinfo();9OM七七世界-网站建设|UI设计|人资系统|二次开发
?>9OM七七世界-网站建设|UI设计|人资系统|二次开发
-------------------------9OM七七世界-网站建设|UI设计|人资系统|二次开发
如果访问http://你的域名/e/showkey/index.php,显示的不是乱码,是红叉,那么直接跳到第二步9OM七七世界-网站建设|UI设计|人资系统|二次开发
2、批量去掉BOM头代码9OM七七世界-网站建设|UI设计|人资系统|二次开发
将以下代码保存为PHP文件并放置根目录下运行,则可以批量去掉BOM头9OM七七世界-网站建设|UI设计|人资系统|二次开发
-------------------------9OM七七世界-网站建设|UI设计|人资系统|二次开发
<?php9OM七七世界-网站建设|UI设计|人资系统|二次开发
if (isset($_GET['dir'])){ //设置文件目录9OM七七世界-网站建设|UI设计|人资系统|二次开发
$basedir=$_GET['dir'];9OM七七世界-网站建设|UI设计|人资系统|二次开发
}else{9OM七七世界-网站建设|UI设计|人资系统|二次开发
$basedir = '.';9OM七七世界-网站建设|UI设计|人资系统|二次开发
}9OM七七世界-网站建设|UI设计|人资系统|二次开发
$auto = 1;9OM七七世界-网站建设|UI设计|人资系统|二次开发
checkdir($basedir);9OM七七世界-网站建设|UI设计|人资系统|二次开发
function checkdir($basedir){9OM七七世界-网站建设|UI设计|人资系统|二次开发
if ($dh = opendir($basedir)) {9OM七七世界-网站建设|UI设计|人资系统|二次开发
while (($file = readdir($dh)) !== false) {9OM七七世界-网站建设|UI设计|人资系统|二次开发
if ($file != '.' && $file != '..'){9OM七七世界-网站建设|UI设计|人资系统|二次开发
if (!is_dir($basedir."/".$file)) {9OM七七世界-网站建设|UI设计|人资系统|二次开发
echo "filename: $basedir/$file ".checkBOM("$basedir/$file")." <br>";9OM七七世界-网站建设|UI设计|人资系统|二次开发
}else{9OM七七世界-网站建设|UI设计|人资系统|二次开发
$dirname = $basedir."/".$file;9OM七七世界-网站建设|UI设计|人资系统|二次开发
checkdir($dirname);9OM七七世界-网站建设|UI设计|人资系统|二次开发
}9OM七七世界-网站建设|UI设计|人资系统|二次开发
}9OM七七世界-网站建设|UI设计|人资系统|二次开发
}9OM七七世界-网站建设|UI设计|人资系统|二次开发
closedir($dh);9OM七七世界-网站建设|UI设计|人资系统|二次开发
}9OM七七世界-网站建设|UI设计|人资系统|二次开发
}9OM七七世界-网站建设|UI设计|人资系统|二次开发
function checkBOM ($filename) {9OM七七世界-网站建设|UI设计|人资系统|二次开发
global $auto;9OM七七世界-网站建设|UI设计|人资系统|二次开发
$contents = file_get_contents($filename);9OM七七世界-网站建设|UI设计|人资系统|二次开发
$charset[1] = substr($contents, 0, 1);9OM七七世界-网站建设|UI设计|人资系统|二次开发
$charset[2] = substr($contents, 1, 1);9OM七七世界-网站建设|UI设计|人资系统|二次开发
$charset[3] = substr($contents, 2, 1);9OM七七世界-网站建设|UI设计|人资系统|二次开发
if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {9OM七七世界-网站建设|UI设计|人资系统|二次开发
if ($auto == 1) {9OM七七世界-网站建设|UI设计|人资系统|二次开发
$rest = substr($contents, 3);9OM七七世界-网站建设|UI设计|人资系统|二次开发
rewrite ($filename, $rest);9OM七七世界-网站建设|UI设计|人资系统|二次开发
return ("<font color=red>BOM found, automatically removed._<a href=http://www.yeetech.com>http://www.yeetech.com</a></font>");9OM七七世界-网站建设|UI设计|人资系统|二次开发
} else {9OM七七世界-网站建设|UI设计|人资系统|二次开发
return ("<font color=red>BOM found.</font>");9OM七七世界-网站建设|UI设计|人资系统|二次开发
}9OM七七世界-网站建设|UI设计|人资系统|二次开发
}9OM七七世界-网站建设|UI设计|人资系统|二次开发
else return ("BOM Not Found.");9OM七七世界-网站建设|UI设计|人资系统|二次开发
}9OM七七世界-网站建设|UI设计|人资系统|二次开发
function rewrite ($filename, $data) {9OM七七世界-网站建设|UI设计|人资系统|二次开发
$filenum = fopen($filename, "w");9OM七七世界-网站建设|UI设计|人资系统|二次开发
flock($filenum, LOCK_EX);9OM七七世界-网站建设|UI设计|人资系统|二次开发
fwrite($filenum, $data);9OM七七世界-网站建设|UI设计|人资系统|二次开发
fclose($filenum);9OM七七世界-网站建设|UI设计|人资系统|二次开发
}9OM七七世界-网站建设|UI设计|人资系统|二次开发
?>9OM七七世界-网站建设|UI设计|人资系统|二次开发
-------------------9OM七七世界-网站建设|UI设计|人资系统|二次开发
运行之后,我们来看页面,如下9OM七七世界-网站建设|UI设计|人资系统|二次开发
9OM七七世界-网站建设|UI设计|人资系统|二次开发
拉动,右侧滚动条,直至看到红色字样,则表示有的文件包含了bom,此时,我们把文件下载下来,然后用dw打开,存储为UTF-8编码,然后上传至服务器,重新运行 bom.php 在看测试结果,如果没有红色字样,那么此时,验证码应该可以正常显示了。9OM七七世界-网站建设|UI设计|人资系统|二次开发
站长提示:我们经常会改的文件有以下文件:9OM七七世界-网站建设|UI设计|人资系统|二次开发
config.php connect.php t_functions.php user.php等,修改完之后,注意把这些文件存储为utf-8模式,并取消bom签名!9OM七七世界-网站建设|UI设计|人资系统|二次开发