当前位置:首页 > 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. } 
  9. $auto = 1; 
  10. checkdir($basedir); 
  11. function checkdir($basedir){ 
  12. if ($dh = opendir($basedir)) { 
  13.   while (($file = readdir($dh)) !== false) { 
  14.    if ($file != '.' && $file != '..'){ 
  15.     if (!is_dir($basedir."/".$file)) { 
  16.      echo "文件名称: $basedir/$file ".checkBOM("$basedir/$file")." <br>"; 
  17.     }else{ 
  18.      $dirname = $basedir."/".$file; 
  19.      checkdir($dirname); 
  20.     } 
  21.    } 
  22.   } 
  23. closedir($dh); 
  24. } 
  25. } 
  26. function checkBOM ($filename) { 
  27. global $auto; 
  28. $contents = file_get_contents($filename); 
  29. $charset[1] = substr($contents, 0, 1); 
  30. $charset[2] = substr($contents, 1, 1); 
  31. $charset[3] = substr($contents, 2, 1); 
  32. if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) { 
  33.   if ($auto == 1) { 
  34.    $rest = substr($contents, 3); 
  35.    rewrite ($filename, $rest); 
  36.    return ("<font color=red>发现BOM并且已自动删除</font>"); 
  37.   } else { 
  38.    return ("<font color=red>发现BOM</font>"); 
  39.   }//开源软件:phpfensi.com 
  40. } 
  41. else return ("没有发现BOM"); 
  42. } 
  43. function rewrite ($filename, $data) { 
  44. $filenum = fopen($filename, "w"); 
  45. flock($filenum, LOCK_EX); 
  46. fwrite($filenum, $data); 
  47. fclose($filenum); 
  48. } 
  49. ?> 

方法四

如果只是后台登录的验证码无法正常显示的话,那么你可以选择取消登录时要输入验证码,打开织梦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验证码不显示

分享到: