温馨提醒

如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!

本文最后更新于2020年9月15日,已超过 30天没有更新

使用织梦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);


}


?>

历史上的今天
09月
15
    抱歉,历史上的今天作者很懒,什么都没写!
版权声明:原创作品,未经允许不得转载,否则将追究法律责任。
本站资源有的自互联网收集整理,如果侵犯了您的合法权益,请联系本站我们会及时删除。
本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
本文链接:悟空资源网https://www.wkzyw.com/1026.html
许可协议:《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权