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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[php学习资料] 验证码

[复制链接]
跳转到指定楼层
楼主
发表于 2018-12-16 01:00:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
index.php
/ r) ?6 i. o) w! C9 b: f8 K
  1. <?php
    & P  w, ]' H+ \* t( ?: E1 Y
  2. session_start();' Q, ?, P7 i) ]0 A
  3. // 丢弃输出缓冲区的内容 **
    ; t: Y+ v* M! o6 [; `
  4. ob_clean();% `( ^& |5 v, h+ I* Q8 |
  5. header ('Content-Type: image/png');
    & o3 T7 y$ K2 N. U3 q( l
  6. // 1 创建画布
    ; Z1 A( @& [, o5 P1 Z, b
  7. $image=imagecreatetruecolor(100, 30);
    : P0 M8 n# K, V2 ]. u9 C3 }
  8. // 2 画一个矩形并填充背景颜色为白色5 l+ k2 F0 t2 Y' U# g& P
  9. $color=imagecolorallocate($image, 255, 255, 255);
    ) H6 V* j9 J. ]+ a  S% s! O
  10. imagefill($image, 20, 20, $color);
    4 X+ t$ _- \9 C2 q' }
  11. // for($i=0;$i<4;$i++){  ?) c' B/ Y) M! }: `: x
  12.     // $font=6;5 ?; T: C8 A. s; h& @# @
  13.     // $x=rand(5,10)+$i*100/4;
    2 X$ F! j6 n3 F8 h5 b  U* i
  14.     // $y=rand(8, 15);2 W7 Q5 b% M) D6 J9 Q
  15.     // $string=rand(0, 9);
    6 w* |, n0 ^8 m0 J: S/ e- o- }
  16.     // $color=imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
    4 R  @* F1 `; W, Z! g) Y; ~
  17.     // imagestring($image, $font, $x, $y, $string, $color);5 G; O- K  N* ~8 s, H1 v6 B
  18. // }0 B- |8 u+ G4 O  [
  19. $code='';
    ( [+ L0 `. }) h" [7 T8 g8 W
  20. for($i=0;$i<4;$i++){- ^' s+ r3 P" i" v% I
  21.     $fontSize=8;
    ! ?, q: D& O- P) y" O9 d
  22.     $x=rand(5,10)+$i*100/4;0 j& R( H; m6 u9 `
  23.     $y=rand(5, 15);
    4 F) B8 u$ _6 f. X' l
  24.     $data='abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHJKLMNPQRTUVWXYZ';
    ) C: a- \# M( l  N) N- |
  25.     $string=substr($data,rand(0, strlen($data)),1);% P; j9 e6 V) j$ w0 ]
  26.     $code.=$string;1 G: F: N1 L# m* }6 D4 B. F5 g
  27.         // 3.2 加载自定义字体( H$ l9 P0 N/ L
  28.         $font_file = '1.ttf';5 w7 C" a& D% I! l
  29.     $color=imagecolorallocate($image,rand(0,120), rand(0,120), rand(0,120));
    : v6 t, Z7 q5 H+ t, E$ `0 c* W6 b
  30.         // 把文字填充到画布1 K/ l* p3 a* W! Y9 h
  31.         //imagefttext($image, 10, mt_rand(-5, 10), $x, $y, $color, $font_file, $string);
      f. n# G( R3 V, M
  32.     imagestring($image, $fontSize, $x, $y, $string, $color);
    . I/ B: e; C% a$ n0 f: M. b5 x
  33. }; M3 C$ R8 L4 x  j2 T. L* m& r
  34. $_SESSION['code']=$code;//存储在session里
    0 x7 z: W  k, M2 D5 u
  35. for($i=0;$i<200;$i++){
    " w4 t. p- W2 Y2 w" @* k
  36.     $pointColor=imagecolorallocate($image, rand(100, 255), mt_rand(100, 255), rand(100, 255));
    ( b* {: o0 u4 [. r5 i' R' [
  37.     imagesetpixel($image, mt_rand(0, 100), rand(0, 30), $pointColor);# n1 t7 [4 W1 I1 c6 x6 O
  38. }9 D; j  p- F) a6 p1 ?& B
  39. for($i=0;$i<2;$i++){
    / N  q+ \1 Z  s5 s5 C3 g
  40.     $linePoint=imagecolorallocate($image, rand(150, 255), rand(150, 255), rand(150, 255));
    0 U5 v  n' Y3 u$ h: N
  41.     imageline($image, rand(10, 50), rand(10, 20), rand(80,90), rand(15, 25), $linePoint);
    ) R6 ~+ L5 F$ T% |2 b; s( f6 l
  42. }
    , |8 r8 p' m2 n# E! r% P
  43. imagepng($image);3 `* f9 O( U1 H: i- O
  44. imagedestroy($image);
    ' p2 o! g9 _. ]1 q
  45.   O; j! _% A9 \( _# K( c
  46. ?>
复制代码
, P  U5 Z. e8 O, y; C$ @& L5 T. V% Z
form.php
3 v5 {5 p' o, K% }0 ^
  1. <?php& F+ x* ~1 f/ I6 N+ R  X& X" U  Z
  2.     if(isset($_REQUEST['code'])){* m# q6 q7 F" H/ c9 w
  3.          session_start();
      F( q! a) M5 I3 Q
  4.         if($_REQUEST['code']==$_SESSION['code']){
    - V: Q& S. Q6 P, z1 C, v3 C- r
  5.             echo "<font color='red'>输入正确</font>";: b6 \7 X# B$ B* L+ p7 B
  6.         }else{; E/ P* M5 Z6 T0 O! \0 }# o
  7.             echo "<font color='red'>输入错误</font>";
    - K. [) _, ?: B: K, c
  8.         }8 s+ ?) K( {9 p2 m0 l" C5 C
  9.     }) g' ^; X# p1 d% e6 j  L8 i
  10. ?>
    , I4 u& v3 w; g+ T" H* s1 G( d
  11. <!DOCTYPE html>1 p+ R% m6 \1 J+ [( r
  12. <html>9 E- y& `5 t, y4 ^- `! W
  13.     <head>0 c; B* q0 @+ N' }
  14.         <meta chartset="UTF-8" />
    1 e$ T! t/ m0 [9 ~7 J
  15.         <style type="text/css" rel="stylesheet">0 N6 {9 i2 V9 c& m% a, u" k
  16.             a{
    8 R9 x, A% W5 e  B0 {1 c+ G( S
  17.                 text-decoration:none;
    # K* j6 d, C/ \* v/ x1 L- p
  18.                 font-size:30px;
    7 T: }  F4 d) e; ?
  19.                 color:blue;5 Q" h( f. q( H2 G% U
  20.             }: l! Q& Q+ v$ u, V
  21.             a:hover{3 A3 m4 C3 L9 {8 X. |0 G0 \2 `5 G
  22.                 text-decoration:underline;
    * q- T2 A  B- O6 t* V
  23.             }: }8 L  h+ t) `! ~1 H
  24.         </style>
    & x) w8 {0 ~8 l$ y
  25.     </head>
    9 W/ A- a- w$ J. E3 s
  26.     <body>" v. \( h) O7 M
  27.         <form action="form.php" method="get">2 d/ _% o2 O$ i+ r, M/ r
  28.             验证码:  <img id="img" src="index.php?" onclick="changeCode()"/>' E; m. s0 |: r& k. v
  29.             <a href="javascript:void(0)" onclick="changeCode()">看不清?</a> <br />
    + F4 p' u$ r( x
  30.             请输入验证码: <input name="code" /><br />/ A  A+ x, ^/ g0 {* O& m
  31.             <input type="submit" value="提交" />
    8 w9 _) }' F" M2 ^$ [: N
  32.         </form>( j& v' p+ B; b0 a* L
  33.     </body>' C! r$ D$ a! T! y& K  s
  34.     <script type="text/javascript">
    ( Y* ?) M/ U- \5 L; g  h; T3 {
  35.         
    0 q& z& u) }2 [: b9 z
  36.         function changeCode(){
    " q! m* W# g, R5 V: f
  37.             var img=document.getElementById('img');
    * x( f, L* T& l/ a) |1 K
  38.             //img.src='index.php?r='+Math.random();
    + n9 t3 L$ `% [3 \
  39.             img.setAttribute('src','index.php?r='+Math.random());1 p1 y8 n9 d) `' f0 x
  40.         }
    : v& R! k# V+ @; O) g: v
  41.     </script>
    4 h5 x: Q3 A" T2 B9 x5 r- H& u
  42. </html>
复制代码
* o5 H6 h5 _! l7 p2 O" |: B2 N
- [$ h3 |6 V, [2 x- U, [# n8 l$ H. Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 17:13 , Processed in 0.138111 second(s), 19 queries .

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