织梦dedecms后台验证码不显示或不正常解决方法

关于织梦后台验证码的问题多次被提及到,例如:

1、后台验证码不显示:

2、后台验证空白,只显示背景不显示字母

3、后台验证码一直固定某个字符不变动,验证码显示异常

上面这3中情况361源码被问及很多次,尤其是第一和第二中情形,下面361源码小编就这几个问题详细和大家讲解下如何处理。

第一种情况:Dede后台验证码图片不显示

解决方法:验证码需要GD库,请检查你的环境是否开启GD库。出现这样的情况,很大可能是你的空间或者服务器没有开启GD库。

第二种情况:Dede后台验证码只显示背景不显示字母

解决方法

验证码只显示背景,不显示字母,打开验证码生成文件:Include/

找到

for($i=0;$i<$rndcodelen;$i++)
{
$bc = mt_rand(0, 1);
$rndstring[$i] = strtoupper($rndstring[$i]);
$c_fontColor = $fontColor[mt_rand(0,4)];
$y_pos = $i==0 ? 4 : $i*($font_size+2);
$c = mt_rand(0, 15);
@imagettftext($im, $font_size, $c, $y_pos, 19, $c_fontColor, $font_file, $rndstring[$i]);
$lastc = $rndstring[$i];
}

Imagettftext()函数没有成功的执行导致了验证码只显示背景,不显示字母,具体原因为字体文件路径不对。

解决方法

(1)确认include/data/fonts/ 里面存在字体文件,默认为

(2)在for($i=0;$i<$rndcodelen;$i++) 上一行加上如下代码:

$font_file= str_replace("\\","/",$font_file);

即把字体文件路径中反斜杠替换成斜杠,因为我们知道反斜杠有转译字符的功能,$font_file 路经大体为“盘符:\appserv\www”系统错误的把反斜杠当作转义用了,导致$font_file也就不是一个路径了,所以Imagettftext()函数总是返回错误。

加上$font_file= str_replace("\\","/",$font_file);即可解决。

第三种情况:Dede后台验证码显示异常

Include/data/words/文件不存在。

解决方案

(1)拷贝一个进去。

(2)找到代码 'word_type' => (int)$safe_codetype, //

1:数字

2:英文

3:单词 换成'word_type' =>1 (或2) 既验证码为数字或英文。

当然我们还有比较省事的方法来处理,

一、取消织梦后台登录验证码功能,方法如下:

打开dede/,找到如下代码:

if(($validate=='' || $validate != $svali) && preg_match("/6/",$safe_gdopen)){
ResetVdValue();
ShowMsg('验证码不正确!','',0,1000);
exit;
}

第一行替换为:

if(false){

简单来说,也就是:打开dede目录下的 找到:if($validate==” || $validate != $svali)替换为:if( false )

然后,在模板dede/templets/里去掉以下验证码的具体HTML代码:

<li><span>验证码:</span>
<input name=”validate” type=”text” id=”vdcode” style=’width:50px;text-transform:uppercase;’ />
<img id=”vdimgck” src=”../include/” alt=”看不清?点击更换”
 align=”absmiddle” style=”cursor:pointer” onclick=”’?'” />
</li>

保存。

到这里就实现了后台登录不需要输入验证码了。

还一种简便的方法:

第二种:去掉织梦后台验证码的方法

去掉及验证码有效方法:

打开 这个文件,这是个配置文件。

比如:$safe_gdopen = ’1,2,3,5,6,7′; 这个就是系统哪些地方开启验证码。

因此,如果当我们管理后台想关闭验证码(如果验证码无法正确输入,不支持GB库)的时候,只需要打开 将$safe_gdopen = ’1,2,3,5,6,7′; 中的6,7删除即可,不必去进行繁琐的设置。

第三种:清除缓存

把data/session目录下除外的其它session文件都删除,然后本地ie浏览器清除缓存。

第四中:配置服务器

如果你是独立的服务器,可以去中搜索extension=,把它前面的;号去掉,重启IIS或者apache。

如果你是租用的空间,那么可以找空间商,让他帮你开启。

THE END