当前位置:首页 > CMS教程 > DeDecms > 列表

Dedecms5.7 UTF-8版本登陆后台时验证码不显示,解决方法

发布:smiling 来源: PHP粉丝网  添加日期:2015-03-18 11:15:05 浏览: 评论:0 

用Dedecms5.7 UTF-8版本,登录后台,发现验证码没法显示了.

图片不显示,这应该是很多站长朋友们最长遇到的一个问题,本地测试明明好好的,为什么传上空间或者服务器上验证码就无法显示了呢,这可能是由于没有加载gd库扩展所引起的,那么怎么解决呢?

方法一

如果是独立的服务器,可以自己操作,那么可以去你服务器PHP安装目录下找到php.ini(如果是用安装了phpStudy,那个php.ini是放在C:\Program Files\phpStudy\PHP5目录下),打开搜索extension=php_gd2.dll,把它前面的;号去掉,重启IIS或者apache等其他服务器。如果你是租用的空间,那么可以找空间商,让他帮你开启。

方法二

如果使用的是织梦utf8版本的,可以尝试着这种办法,找到data文件夹下的common.inc.php,使用非windows自带文本编辑器,推荐使用emeditor,打开此文件,然后找到右下角,如果是带签名的话,保存为不带签名的,safe文件夹下的inc_safe_config.php也要保存为不带签名的。

方法三

如果风站是UTF-8编码的,当你用windows自带的记事本编辑网站文件,保存后就会被自动加上了bom头 (BOM: Byte Order MarkUTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行)

所以就得把文件的bom头全部清除,验证码就会正常显示出来。我这给出一个批量删除网站文件bom头的php代码。

使用方法:新建一个php文件,把下面的php代码粘贴到你新建的php文件,随便保存一个文件名,例如:bom.php 。

把bom.php文件复制到你网站的根目录下,在浏览器上打开它:http://你网站网址/bom.php 就会自动帮你删除网站的所有文件带有的bom头,代码示例:

  1. <?php 
  2.  
  3. header("Content-Type:text/html; charset=utf-8"); 
  4. if (isset($_GET['dir'])){ //设置文件目录 
  5. $basedir=$_GET['dir']; 
  6. }else
  7. $basedir = '.'
  8. $auto = 1; 
  9. checkdir($basedir); 
  10. function checkdir($basedir){ 
  11. if ($dh = opendir($basedir)) { 
  12.   while (($file = readdir($dh)) !== false) { 
  13.    if ($file != '.' && $file != '..'){ 
  14.     if (!is_dir($basedir."/".$file)) { 
  15.      echo "文件名称: $basedir/$file ".checkBOM("$basedir/$file")." <br>"
  16.     }else
  17.      $dirname = $basedir."/".$file
  18.      checkdir($dirname); 
  19.     } 
  20.    } 
  21.   } 
  22. closedir($dh); 
  23. function checkBOM ($filename) { 
  24. global $auto
  25. $contents = file_get_contents($filename); 
  26. $charset[1] = substr($contents, 0, 1); 
  27. $charset[2] = substr($contents, 1, 1); 
  28. $charset[3] = substr($contents, 2, 1); 
  29. if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) { 
  30.   if ($auto == 1) { 
  31.    $rest = substr($contents, 3); 
  32.    rewrite ($filename$rest); 
  33.    return ("<font color=red>发现BOM并且已自动删除</font>"); 
  34.   } else { 
  35.    return ("<font color=red>发现BOM</font>"); 
  36.   }//开源软件:phpfensi.com 
  37. else return ("没有发现BOM"); 
  38. function rewrite ($filename$data) { 
  39. $filenum = fopen($filename"w"); 
  40. flock($filenum, LOCK_EX); 
  41. fwrite($filenum$data); 
  42. fclose($filenum); 
  43. ?> 

方法四

如果只是后台登录的验证码无法正常显示的话,那么你可以选择取消登录时要输入验证码,打开织梦data文件夹下的safe文件夹,打开inc_safe_config.php文件,然后把$safe_gdopen = '1,2,3,4,5,6,7';改为$safe_gdopen = '1,2,3,4,5';

这样登陆后台就不用验证码了。

方法五:

权限问题:修改根目录下data--sessions的目录权限为777即可。

Tags: UTF-8版本 Dedecms验证码不显示

分享到: