最有效解决dede后台登录验证码显示不正确的方法

admin 发表于 2015-11-6 11:42:10 | 栏目:站长教程 |分类:[织梦教程]
模板狗小编今天遇到一个棘手的问题,那就是dede后台登录验证码不显示的问题,这个问题之前也遇到过很多次,但是今天不管怎么折腾都没有折腾好。那么我就为大家总结下怎么快速有效的解决好这个问题。
" M6 l2 C4 x: ~" I: _
. Y# U/ ?' [0 d% o: ]# q我是通过以下方法解决的:' }' d2 A1 T5 B' [# T5 n' t
打开data/safe/inc.safe.config.php( p# w1 n9 J, l9 R' x
) s& V9 `# s, K) {4 Q
把代码$safe_gdopen = '1,2,3,4,5,6,7'; 中的6,删除即可======================我是直接通过这个方法解决的。
9 a" K& j& Z- Q* U* {7 x! U3 P# G0 l
Dede后台验证码不显示情况一分析
. n# K6 U- a, x2 v% J! P# T+ M1 H1 n' l: v" `, t
验证码需要GD库 请检查你的环境是否开启GD库
: H' K( @6 Z& u0 o2 F( [
2 u5 ^  x6 X; J1 l5 k; x* C0 @ Dede后台验证码不显示情况二分析: [# f* s# e! I  m. \3 S) J1 D

9 ~/ h, q4 h8 c0 X验证码只显示背景 不显示字母
% {$ Y* [# `/ b% f# T4 j) i! l; u6 Z9 S7 S* a5 q6 ?* K
打开验证码生成文件 Include/vdimgck.php + ?# i* ]9 [3 Z" i8 x0 M( Q

+ \+ M% ^1 ~* i! c+ L8 }0 U找到
. L5 U3 G4 l. i; {+ b3 Z, {8 I% u5 l$ P$ o- i  F
    for($i=0;$i<$rndcodelen;$i++)4 l5 t5 U; O/ m( g: \

1 y. B3 Q; ^6 C, U, C0 K1 o9 i    {
8 W8 p( R5 m* ^4 S2 l' e
. j& T& d- U5 U        $bc = mt_rand(0, 1);, T, z6 v3 D  d7 g# X4 d

1 Y5 m7 w8 j- D+ p* g% A1 e        $rndstring[$i] = strtoupper($rndstring[$i]);
! T" u9 [# y/ \# c5 c; {1 \- w$ ~* A+ }+ p9 U; I2 v2 z
        $c_fontColor = $fontColor[mt_rand(0,4)];
  L7 b/ `& f& [6 S; {! x: y4 H+ t, _
3 B6 b7 E; I# [% m        $y_pos = $i==0 ? 4 : $i*($font_size+2);$ T6 r1 |; u( b! l0 T6 H

. Y$ z( f$ A/ j1 c$ o; ~        $c = mt_rand(0, 15);
0 t5 l. W8 n' q" W- ?9 ^( W0 p4 b
        @imagettftext($im, $font_size, $c, $y_pos, 19, $c_fontColor, $font_file, $rndstring[$i]);
# O& |6 Y+ _$ |5 _6 O3 }: J: C9 i" N& a6 X  }/ `6 b2 l$ V7 g
        $lastc = $rndstring[$i];
. v% j+ h' E/ B/ G. n% N5 X0 W4 f4 ]/ V# `3 h7 K
}( C1 b9 g* ^$ O* i' s; T; Y* Y

9 {: P0 o6 E: v4 |  }" jImagettftext()函数没有成功的执行导致了验证码只显示背景 不显示字母4 E2 _* z$ f- z
6 N3 Y) z/ W" u  g8 A, k5 V, U
具体原因为 字体文件路径不对.解决方法. ^6 C) h; @0 g' r6 O! h! A) L

8 W- _, V% S' [9 z, t) W1确认include/data/fonts/ 里面存在字体文件  默认为ggbi.ttf5 R3 G- N' ~% q" a: p$ D# u$ W

; X/ Q8 Y, ~' S! h, }% d2在for($i=0;$i<$rndcodelen;$i++) 上一行 加上如下代码:
, U8 r: x) r9 _1 m0 ^, G5 u( W, ?$ {5 c9 l+ V3 O( D6 x8 o2 [+ X
            $font_file= str_replace("\\","/",$font_file);
7 ]4 }4 d6 Z5 h* r0 |& f" X
, Z! D4 w; ?8 ~2 X% A  Y 即把字体文件路径中反斜杠替换成斜杠 因为我们知道反斜杠有转译字符的功能,
) y6 q2 C. F4 i4 j2 m
) B, X4 v/ Y1 [  K" w0 I$font_file 路经大体为 盘符:\appserv\www 系统错误的把反斜杠 当作转义用了 导致$font_file也就不是一个路径了 所以Imagettftext()函数总是返回错误7 m1 ?; @; ]2 G* c) ]

0 A9 \0 }$ d  |3 N3 Y. E加上$font_file= str_replace("\\","/",$font_file);即可解决  H8 E7 d( T/ C8 L3 B
$ `: c3 T' S; ^2 O# `% e
Dede后台验证码不显示情况三分析
4 m9 o# X* f4 W1 ?7 R# O/ ]& Y8 x0 \  `! X% d2 `. T
Include/data/words/words.txt 文件不存在  
; }* W( E# x0 M9 \- c; D& o+ @/ i* y1 Z  \/ z. E
解决方案1 拷贝一个进去
1 D. m* F/ f! \$ E: W6 L# ]  V# Q( G2 l9 l# N0 E& X1 K) ^) ?
               2找到代码    'word_type'  => (int)$safe_codetype,   // 1:数字  2:英文   3:单词3 [2 ~7 b2 U9 x

; e/ ~& H/ [6 c                换成'word_type'  =>1  (或2) 既验证码为数字或英文5 ~7 t" r! D% S! E9 D/ E
7 W1 f: c. u3 c

7 l/ T* i4 ]2 a# G1 Z* s, |4 e: K7 O& j8 A
Dede后台验证码不显示 全部情况解决
/ R6 ~& u; H1 D- w/ l4 l8 Z* j# f, o8 A
如果原来可以显示后来取消验证码后再设置就无法显示,可以通过覆盖data与include目录试试。
2 j4 s+ y$ B9 j+ m$ F+ X( \# `+ H% b. e+ e7 }* r
通用解决方案---取消后台验证码功能% z/ n  Y' N$ q- u
0 }6 u- f( ^: A- O0 F) W
因为没有验证码 不能进后台 所以修改php文件源代码:) T0 ?& z/ k! Q& f

" t( l5 o6 R& @' G- H' `方法二:4 R+ I: b; k5 l4 `

- O( M) f& H: l* U. W打开dede/login.php 找到如下代码
" ?' d% v; a8 g5 _
& i2 F+ G* `. s, a# c; x% Z6 h    if(($validate=='' || $validate != $svali) && preg_match("/6/",$safe_gdopen)){
5 S4 `- a% ~* R3 P# F" z+ Y; V
' u+ y% C; B' R+ m) D( M        ResetVdValue();
* x6 _' V; T2 m! C+ G6 o$ g# O* Y8 W" [6 g; X
        ShowMsg('验证码不正确!','login.php',0,1000);2 e: a  c1 C/ B9 [8 ]
& h; F+ Q3 \0 Y. n
        exit;  I1 L3 n( l6 N( D0 F
8 y7 F# l+ K& W$ J# m
}( v" g2 Y" W$ S" i! c; @" b
3 B, i/ ?5 \* o0 T' o8 a4 ^7 t
第一行替换为   if(false){         " L4 h1 G; Q# c. ]+ x" x

; k# [8 L- p) k& a+ M! `% W& g' k+ P# w好 问题解决 不输验证码后台直接进去
0 B( e4 X; ]6 G7 X5 b7 ?# r0 Q, L7 K5 @9 |! {( q) z& ?

, k" J; f  d8 c/ i
2 S3 S$ `8 m5 Y" @  G
6 E0 ?) q/ h: F) S4 W7 L( j. _' \6 h
0 a, P# D& @$ J. L  B$ a
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

qq
收缩
快速回复 返回顶部 返回列表