您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12613|回复: 0
打印 上一主题 下一主题

[php学习资料] 验证码

[复制链接]
跳转到指定楼层
楼主
发表于 2018-12-16 01:00:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
index.php
. O+ ^" H8 H: R2 v: a  X6 z7 N
  1. <?php
    8 e6 Q4 L' f# ?0 ]- N' I; _
  2. session_start();1 e" z# ?$ [) m( _5 b7 n
  3. // 丢弃输出缓冲区的内容 **
    # v2 O( p4 A! C2 [& G3 W0 }/ z
  4. ob_clean();: O+ p9 h# w* ^- x9 @
  5. header ('Content-Type: image/png');0 G+ d+ W0 T0 f! z
  6. // 1 创建画布
    6 M) f: M+ P0 u0 t2 m& R
  7. $image=imagecreatetruecolor(100, 30);, A0 V1 l$ u. K8 `. U$ m
  8. // 2 画一个矩形并填充背景颜色为白色, [1 d- v: X# a3 _; L
  9. $color=imagecolorallocate($image, 255, 255, 255);
    9 B% S) w/ ~9 b! v1 K
  10. imagefill($image, 20, 20, $color);
    - T) i1 s' s$ o2 ^( j% ?6 Z
  11. // for($i=0;$i<4;$i++){
    2 |' h. i. k7 s% }& P" q
  12.     // $font=6;, l' Y0 G- a4 U& F* ~
  13.     // $x=rand(5,10)+$i*100/4;/ j( N1 O5 q9 T1 y7 Q7 ~+ W( Q
  14.     // $y=rand(8, 15);
    ! X! g6 v4 {. r7 [& I
  15.     // $string=rand(0, 9);& V2 E5 O% O& C# T8 Z" I! \% `# c
  16.     // $color=imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
    . g: ], U+ d* b1 H0 l
  17.     // imagestring($image, $font, $x, $y, $string, $color);6 X- K9 J. z% g
  18. // }
    , t/ w. g+ Q8 s  f1 C7 o7 D  k) z
  19. $code='';
    / i4 l8 D5 `" I* U( Z5 {
  20. for($i=0;$i<4;$i++){
      [, x( ?5 q  M, C0 u. Z- F3 w
  21.     $fontSize=8;
    - N2 M5 ~/ P6 g9 i9 C$ V0 n
  22.     $x=rand(5,10)+$i*100/4;6 x; y' O4 W, ]8 M
  23.     $y=rand(5, 15);# t  k2 D1 t* \0 `
  24.     $data='abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHJKLMNPQRTUVWXYZ';
    3 U7 a+ [: T3 c- M0 r
  25.     $string=substr($data,rand(0, strlen($data)),1);
    2 q4 u' d/ x" b0 }* q- L' a& w! r
  26.     $code.=$string;. L: e5 b! B/ b& O% X
  27.         // 3.2 加载自定义字体
    % l$ ]0 y+ K/ s& d4 d" r9 P5 m4 D( r
  28.         $font_file = '1.ttf';
    & l+ l( u7 O9 [) Z2 \6 D/ a
  29.     $color=imagecolorallocate($image,rand(0,120), rand(0,120), rand(0,120));% Z# j2 w9 i  Y( n* M9 I
  30.         // 把文字填充到画布
    " H2 _& K( Q( y6 s! `. R: X( [' _
  31.         //imagefttext($image, 10, mt_rand(-5, 10), $x, $y, $color, $font_file, $string);
      g+ y' Y5 B& T/ p
  32.     imagestring($image, $fontSize, $x, $y, $string, $color);
    - T/ a6 v& n) {0 l$ G
  33. }
    ' T6 o8 {( D3 m; q% N
  34. $_SESSION['code']=$code;//存储在session里9 F" C/ p/ B$ z! E3 {. b' w
  35. for($i=0;$i<200;$i++){
    $ M/ B. N, S; F; ^) ~
  36.     $pointColor=imagecolorallocate($image, rand(100, 255), mt_rand(100, 255), rand(100, 255));
    # B: l! ]( ~9 E; I
  37.     imagesetpixel($image, mt_rand(0, 100), rand(0, 30), $pointColor);
      _0 u1 P, h0 Y5 B" f! t2 j4 _
  38. }0 R0 ?# M/ N# q0 j) t6 e  @
  39. for($i=0;$i<2;$i++){
    " j, w; H. V% `$ @0 A5 }+ p- Y
  40.     $linePoint=imagecolorallocate($image, rand(150, 255), rand(150, 255), rand(150, 255));2 F2 Z3 I) b1 r# c6 y/ \
  41.     imageline($image, rand(10, 50), rand(10, 20), rand(80,90), rand(15, 25), $linePoint);
    2 g. L* q3 }7 j7 C1 \* X# A) j* Q
  42. }
    $ p. Q' |' ]3 G9 d5 \
  43. imagepng($image);' y' j, Y5 }9 O2 T% ^! d7 P( _: R* W
  44. imagedestroy($image);( b  i- }* W) d$ E, |" o
  45. ' x' ^: D  N8 P/ C) p: i7 e3 ?
  46. ?>
复制代码
, {( D, ?4 @+ o# S: x2 V1 p' N. |
form.php! @# o4 r3 [+ v" B8 j. ~8 c
  1. <?php
    ( {( Z' \$ F; e8 X
  2.     if(isset($_REQUEST['code'])){
    $ K. L3 G$ H8 D  d; L6 x- Y2 h
  3.          session_start();
    ; A6 i& L( p4 B7 U
  4.         if($_REQUEST['code']==$_SESSION['code']){& L+ x$ U: b5 I& O5 Y' y
  5.             echo "<font color='red'>输入正确</font>";
    3 K' W3 F9 Y+ r/ C1 ^
  6.         }else{
    / E+ L7 j" J! }; G
  7.             echo "<font color='red'>输入错误</font>";
    8 Y) d; a6 j$ P- H; j# s5 u3 x
  8.         }
    / ^' J! S" G" C/ ~8 V
  9.     }
    9 M; X1 n, J0 Y# A/ r" ^
  10. ?>
      v  r5 [: r# x5 L/ l+ ]
  11. <!DOCTYPE html>. n3 z- g: M9 J/ j; \
  12. <html>1 p$ o& q1 k9 F0 ~
  13.     <head>
    * q/ |0 w7 y7 B# U9 ^  i: G; ]
  14.         <meta chartset="UTF-8" />
    2 E/ U3 a- \) [" z0 u" P7 ?; `
  15.         <style type="text/css" rel="stylesheet">
    * ^) ~; F/ O0 u2 s7 k. t
  16.             a{! c! h+ R, B5 p2 W+ g7 h
  17.                 text-decoration:none;
    ' R# X6 ?7 j2 l4 I7 l. {
  18.                 font-size:30px;7 Y1 v& r5 }# e' b
  19.                 color:blue;
    7 a4 m. `& `$ }+ d% L) C: |' `
  20.             }, G8 a* A! z* y: }
  21.             a:hover{
    ( M) x+ G/ p6 `+ U
  22.                 text-decoration:underline;
    $ j+ h. f2 p. c1 {. ~, j, b
  23.             }. y  b0 g# c+ H7 D8 S2 m+ y8 K% D
  24.         </style>, X6 P2 l; P5 q6 m" F( w
  25.     </head>' k* @) l6 @: I' x
  26.     <body>% ?) d- a# H& X9 W1 R
  27.         <form action="form.php" method="get">4 R& d/ D. A/ o5 s7 |9 _9 s# {/ Y7 F! d
  28.             验证码:  <img id="img" src="index.php?" onclick="changeCode()"/>
    3 f- |6 \% ^+ {; q
  29.             <a href="javascript:void(0)" onclick="changeCode()">看不清?</a> <br /># X( v) c5 w- X# a% {6 o+ ?
  30.             请输入验证码: <input name="code" /><br />
    ( D6 O( v5 F0 {! p, N& E, Q
  31.             <input type="submit" value="提交" />6 }, U; e7 g9 K+ N0 F7 z( D
  32.         </form>6 s( ?: q, b* J4 Q8 x
  33.     </body>
    $ k" o2 z' i# w% {
  34.     <script type="text/javascript">) n" C  z, a0 @
  35.         
    , O2 I7 T5 j4 N, M; _: P1 _2 e
  36.         function changeCode(){
      h# r3 P3 ~$ _% M5 A4 ~8 I
  37.             var img=document.getElementById('img');6 G" D5 R/ A  `7 A4 L- X. S
  38.             //img.src='index.php?r='+Math.random();
    8 K2 N. F$ X! Q& t
  39.             img.setAttribute('src','index.php?r='+Math.random());: B7 ^; m( B, [* I1 ]0 `% P! p
  40.         }
    ! w$ D# j% Y0 ?6 N, N0 b
  41.     </script>) p1 Y' a" l+ v9 Q8 B
  42. </html>
复制代码
! f6 Q- x. T- T8 O2 Q3 U5 z, S

" b* h' W2 z3 [; t/ e. W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 01:24 , Processed in 0.112739 second(s), 19 queries .

Copyright © 2001-2024 Powered by cncml! X3.2. Theme By cncml!