织梦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。
如果你是租用的空间,那么可以找空间商,让他帮你开启。