Heim  >  Artikel  >  php教程  >  验证码不能显示?通常都是BOM信息惹的祸此代码能解决验证码不能显示问题.

验证码不能显示?通常都是BOM信息惹的祸此代码能解决验证码不能显示问题.

WBOY
WBOYOriginal
2016-06-07 11:45:541127Durchsuche

有时,我们在本地测试环境中需要显示验证码的地方没有问题,一旦布置到服务器上去的时候.需要显示验证码的地方无法显示?如果你也碰到同样问题,请往下看.
问题的原因大部分是BOM头信息造成的,通常thinkphp的配置文件都要去除BOM头信息.什么是BOM头信息?百度一下就知道啦.
我通常的解决办法是,布置到服务器上去之后,新建一个去除所有文件的BOM头信息的代码文件.然后运行之即可.
比如:我在服务器根目录新建一个delBom.php文件.运行http://www.xxx.com/delBom.php即可.代码如下:<?php <br /> if (isset($_GET['dir'])){ //设置文件目录  <br> $basedir=$_GET['dir'];  <br> }else{  <br> $basedir = '.';  <br> }  <br> $auto = 1;  <br> checkdir($basedir);  <br> function checkdir($basedir){  <br> if ($dh = opendir($basedir)) {  <br>   while (($file = readdir($dh)) !== false) {  <br>    if ($file != '.' && $file != '..'){  <br>     if (!is_dir($basedir."/".$file)) {  <br>      echo "filename: $basedir/$file ".checkBOM("$basedir/$file")." <br>";  <br>     }else{  <br>      $dirname = $basedir."/".$file;  <br>      checkdir($dirname);  <br>     }  <br>    }  <br>   }  <br> closedir($dh);  <br> }  <br> }  <br> function checkBOM ($filename) {  <br> global $auto;  <br> $contents = file_get_contents($filename);  <br> $charset[1] = substr($contents, 0, 1);  <br> $charset[2] = substr($contents, 1, 1);  <br> $charset[3] = substr($contents, 2, 1);  <br> if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {  <br>   if ($auto == 1) {  <br>    $rest = substr($contents, 3);  <br>    rewrite ($filename, $rest);  <br>    return ("<font>BOM found, automatically removed._<a>http://www.k686.com</a></font>");  <br>   } else {  <br>    return ("<font>BOM found.</font>");  <br>   }  <br> }  <br> else return ("BOM Not Found.");  <br> }  <br> function rewrite ($filename, $data) {  <br> $filenum = fopen($filename, "w");  <br> flock($filenum, LOCK_EX);  <br> fwrite($filenum, $data);  <br> fclose($filenum);  <br> }  <br> ?>  

AD:真正免费,域名+虚机+企业邮箱=0元

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:ThinkPHP邮件发送函数Nächster Artikel:获取字段第一个字首字母