dede织梦后台验证码不显示怎么办???

使用织梦dede也很长一段时间了,可是今天遇到一个问题就是验证码不显示,我网上找了很多资料,几乎全都是说权限和GD库的问题。


  可是按照这些方法试过后,验证码仍然不能显示。


  后来想到以前做网站的时候遇到一个UTF-8编码的BOM问题。于是就去网上找了段代码,去掉了整个网站文件的BOM。 去掉后验证码还真显示了。


  试分析了一下原因,可能是因为BOM会产生一个空行的输出。导致生成验证码的时候会产生错误,所以不能显示。


  批量去除BOM的方法:将以下代码保存为PHP文件,通过浏览器进行访问即可。


<?php


//remove the utf-8 boms


//by magicbug at gmail dot com


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);


     }


    }


   }


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 (“<font color=red>BOM found,


automatically removed.</font>”);


   } else {


    return (“<font color=red>BOM found.


</font>”);


   }


}


else return (“BOM Not Found.”);


}


function rewrite ($filename, $data) {


$filenum = fopen($filename, “w”);


flock($filenum, LOCK_EX);


fwrite($filenum, $data);


fclose($filenum);


}


?>

下载提示 ①本站所有CMS源码、杰奇CMS模板、PTCMS源码模板、YGBOOK源码模板、帝国CMS源码模板等仅用于学习和交流,勿用于商业。
②本站资源有安装及使用文档,安装使用请自行探索,如您对购买的程序或是模板无法胜任安装工作,请点击付费安装。
③本站资源来源网络或者用户投稿,切勿私自传播于网络,否则将追究法律责任。且仅供学习交流之用,如有侵权请联系删除。
④如果资源失效或下载链接错误请联系站长。

发表评论