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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[php学习资料] 验证码

[复制链接]
跳转到指定楼层
楼主
发表于 2018-12-16 01:00:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
index.php% B# p3 C1 K; G
  1. <?php
    3 [" p; j2 _9 h, w
  2. session_start();8 H6 k4 M! d# d3 J( p/ N
  3. // 丢弃输出缓冲区的内容 **8 G1 m8 R+ b' y) q* L& b
  4. ob_clean();- \0 P9 F( r- j) [( ]" |
  5. header ('Content-Type: image/png');% a$ C: Q8 g5 `& O" [' t) E
  6. // 1 创建画布
    # n: g+ F( w! u; {1 X0 x
  7. $image=imagecreatetruecolor(100, 30);6 N4 t4 i% E( y* U
  8. // 2 画一个矩形并填充背景颜色为白色! y) s+ ^  u% K5 n  U) K
  9. $color=imagecolorallocate($image, 255, 255, 255);
      V) y( X% t3 L% s
  10. imagefill($image, 20, 20, $color);5 }4 ^5 H4 d  J" b
  11. // for($i=0;$i<4;$i++){' q8 u" u0 v% _$ T( b2 }
  12.     // $font=6;8 w& N/ r; y! \6 I; \; x
  13.     // $x=rand(5,10)+$i*100/4;% [. W. Q7 U. h
  14.     // $y=rand(8, 15);
    1 |! o3 a- p: P7 F: ]8 Q6 Z5 |
  15.     // $string=rand(0, 9);: L# q; P# L9 F6 G/ Z" ?
  16.     // $color=imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));  c3 X1 {& ]% _, D
  17.     // imagestring($image, $font, $x, $y, $string, $color);; t- M+ @- u" l  V. s
  18. // }& Z) `/ T9 `6 N: _% J, u# f4 u" z
  19. $code='';
    / a' x! y# u# C) ]) M; U" Z1 O% v7 d
  20. for($i=0;$i<4;$i++){- @' Y: ~  C' n
  21.     $fontSize=8;& u( |% J, l$ i2 `
  22.     $x=rand(5,10)+$i*100/4;, v' j/ t% s  r: J; _1 H3 k" Y! V
  23.     $y=rand(5, 15);
    ) O& k# y5 R8 v3 a3 i2 e4 `
  24.     $data='abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHJKLMNPQRTUVWXYZ';
    / n  K( O8 l% [; [9 f
  25.     $string=substr($data,rand(0, strlen($data)),1);
    0 T+ G$ z7 @( W" J/ \
  26.     $code.=$string;
    + N4 t, s8 }5 B, _
  27.         // 3.2 加载自定义字体
    " h( k: z7 f& Y
  28.         $font_file = '1.ttf';
    & R) k/ O6 H, _5 \
  29.     $color=imagecolorallocate($image,rand(0,120), rand(0,120), rand(0,120));" t& j' b6 J- a
  30.         // 把文字填充到画布/ V; A' \9 w5 s2 v, c& W: o
  31.         //imagefttext($image, 10, mt_rand(-5, 10), $x, $y, $color, $font_file, $string);  ?' X' e  O$ i( z9 \( q, ~- I
  32.     imagestring($image, $fontSize, $x, $y, $string, $color);
    % P9 r8 O# b" m4 Z, o& N6 b
  33. }
    4 ?: l* L0 a" y5 g) K
  34. $_SESSION['code']=$code;//存储在session里% F! b3 i& L- v
  35. for($i=0;$i<200;$i++){
    $ z8 J6 T* T6 A/ i2 k7 Y' f# P
  36.     $pointColor=imagecolorallocate($image, rand(100, 255), mt_rand(100, 255), rand(100, 255));
      M" T; Z. w9 K
  37.     imagesetpixel($image, mt_rand(0, 100), rand(0, 30), $pointColor);
    2 X# C0 v, }2 V$ O5 R  {' \% L
  38. }
    # @6 V% n3 E0 b8 D) F/ W
  39. for($i=0;$i<2;$i++){
    0 j# h+ s: X6 z3 K3 r
  40.     $linePoint=imagecolorallocate($image, rand(150, 255), rand(150, 255), rand(150, 255));9 L% ?" u* p9 ^
  41.     imageline($image, rand(10, 50), rand(10, 20), rand(80,90), rand(15, 25), $linePoint);
    1 o. c0 v0 @% \* I! ?6 [1 r$ K
  42. }
    % J  u8 G# u7 Z4 `" |
  43. imagepng($image);! d5 O$ M0 l: w; h* F: n
  44. imagedestroy($image);
    6 h/ y( A) p8 j" A/ ]

  45. ! y. q4 S) D# O+ W& q/ x
  46. ?>
复制代码
/ Z5 W( R# ^8 Z4 z* L# [
form.php
- v! u5 k9 n, C3 R
  1. <?php$ u7 n' G; ?, h, F
  2.     if(isset($_REQUEST['code'])){  @0 q: U& o+ E8 L% w6 \! c4 h0 V
  3.          session_start();
    9 U  L6 P% f  G) j7 l
  4.         if($_REQUEST['code']==$_SESSION['code']){
    + u5 U' u6 R2 H
  5.             echo "<font color='red'>输入正确</font>";8 c0 A, p% e6 E2 J
  6.         }else{. G+ _1 S; q! [* R$ I
  7.             echo "<font color='red'>输入错误</font>";9 d& |; C) R4 A/ {" f7 d9 ~  |; p5 }
  8.         }
    9 c; [9 a6 P; E4 l2 C* J
  9.     }( }6 _/ E/ ~: J/ |. A0 r2 Z
  10. ?>
    % i8 |% f$ J/ e' i3 R6 Q4 b
  11. <!DOCTYPE html>
    ! W: m5 M2 H$ O5 @- ~
  12. <html>
    * t1 W' c( ]& m3 e0 y! P
  13.     <head>
    : [& m( I- z, ^) v4 h3 C
  14.         <meta chartset="UTF-8" />
    $ _: c' j8 r- v. k- D8 I$ ]
  15.         <style type="text/css" rel="stylesheet">) u1 @' y& x9 w7 W+ j
  16.             a{6 z+ z& k8 m% E% N/ o
  17.                 text-decoration:none;; R2 }6 G' O# K; K, y! _
  18.                 font-size:30px;
    8 n" n; U  |0 l. X* G4 h0 B
  19.                 color:blue;. C, s1 s% d2 ?! b' @' T
  20.             }$ ]2 I+ _5 b4 d
  21.             a:hover{
    3 \3 Q: Y. W& J" ~4 o, v$ @
  22.                 text-decoration:underline;% s0 \% Z; u% M( ^/ L  c8 u" O. q
  23.             }) L0 T" N9 B0 J7 v( c' `: n
  24.         </style>, T/ |4 e' F, |" K7 K2 y
  25.     </head>
    5 ^* u/ K' C0 Z; L2 I
  26.     <body>
    / x7 M: I# \0 `; l# c, y5 \& Z! m1 d
  27.         <form action="form.php" method="get">! |1 t9 n0 N  n' B
  28.             验证码:  <img id="img" src="index.php?" onclick="changeCode()"/>
    . i/ o9 V" q, L+ F
  29.             <a href="javascript:void(0)" onclick="changeCode()">看不清?</a> <br />
    ) K: A8 ]" f9 R- N  r
  30.             请输入验证码: <input name="code" /><br />
    7 _- z& M4 s. e7 i1 Z0 P
  31.             <input type="submit" value="提交" />7 N  \1 j( u, ?4 j/ S, d# e- w- k
  32.         </form>8 c2 I* \7 z: J# Y
  33.     </body>
      M; m; [7 M4 Z' g! f( T
  34.     <script type="text/javascript">1 b6 |& M  D8 v) M( z9 l$ x! Z9 w( [
  35.         
    3 X% y: L0 X) P2 m2 I$ ~# T6 S
  36.         function changeCode(){
    $ V8 ]: v. q; e0 J
  37.             var img=document.getElementById('img');0 ]7 M  J1 v& T/ I
  38.             //img.src='index.php?r='+Math.random();
    ( R, C$ E6 ^6 \) ^1 h& A' P
  39.             img.setAttribute('src','index.php?r='+Math.random());
    : Z" v+ H, b+ g9 Z1 h% f
  40.         }
    % }9 [2 Y( h6 n! e5 m
  41.     </script>
    0 v; \! g) ?- `7 q' T
  42. </html>
复制代码
; M& ~2 P- L6 v/ j7 V

, W* w# }( w8 P6 E, Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 18:44 , Processed in 0.050806 second(s), 20 queries .

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