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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[php学习资料] 验证码

[复制链接]
跳转到指定楼层
楼主
发表于 2018-12-16 01:00:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
index.php1 S& U) F  I: K% j
  1. <?php
    ) l! s' U1 U& @- i, H
  2. session_start();
    5 C" b" _( S: b8 j! Q  M
  3. // 丢弃输出缓冲区的内容 **- q. u" z1 S7 w
  4. ob_clean();
    4 S3 N3 [- y" X, W
  5. header ('Content-Type: image/png');# N9 C. \& R; j* X
  6. // 1 创建画布$ S" [6 r" U! R0 C2 J1 N
  7. $image=imagecreatetruecolor(100, 30);0 t# k0 R5 ^! E
  8. // 2 画一个矩形并填充背景颜色为白色
    : o# J) G  Z: K8 H' t
  9. $color=imagecolorallocate($image, 255, 255, 255);$ ]5 Z& ~: A- C7 m* g! d5 |2 x
  10. imagefill($image, 20, 20, $color);
    8 f& s0 r; ]' {
  11. // for($i=0;$i<4;$i++){+ Y" c( h  v7 k' t$ v! a
  12.     // $font=6;) v1 B; u  X' o2 [
  13.     // $x=rand(5,10)+$i*100/4;
    + G) ~# E' \# {0 \8 F7 l: y+ r
  14.     // $y=rand(8, 15);
    + ?8 r% B* I5 h; B* {6 G
  15.     // $string=rand(0, 9);1 L; b/ f, d0 [6 B
  16.     // $color=imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
    + v: A- c4 p* |1 t
  17.     // imagestring($image, $font, $x, $y, $string, $color);" b+ H2 G# D% I
  18. // }
    / f. O8 a) @9 I+ G& m9 x# `* u
  19. $code='';
    ' c: H  U$ D; ^' _  y5 O
  20. for($i=0;$i<4;$i++){- Q5 b9 ^0 l4 X% C; t) j" s# N
  21.     $fontSize=8;
    & q& f8 f8 w" p9 Q# ?7 B# V
  22.     $x=rand(5,10)+$i*100/4;5 w1 }- I0 o+ U* k
  23.     $y=rand(5, 15);
    3 }* b2 M4 e0 m, }# X
  24.     $data='abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHJKLMNPQRTUVWXYZ';
    ; g. ]4 b4 Z/ j5 o/ E4 @7 g
  25.     $string=substr($data,rand(0, strlen($data)),1);
    . k9 T  b3 R8 U
  26.     $code.=$string;7 o7 W7 E+ G6 F+ ^! m
  27.         // 3.2 加载自定义字体
    ' Z; y5 A* w2 a" d
  28.         $font_file = '1.ttf';
    / q0 `- |. B) p# h$ W
  29.     $color=imagecolorallocate($image,rand(0,120), rand(0,120), rand(0,120));  C/ [1 R, \( j6 Q
  30.         // 把文字填充到画布
    ' C' [8 r) k4 w: D* Q0 J
  31.         //imagefttext($image, 10, mt_rand(-5, 10), $x, $y, $color, $font_file, $string);
    0 {2 w! M7 V* P( `" {  O
  32.     imagestring($image, $fontSize, $x, $y, $string, $color);
    + ], O  x3 J/ |# C& q$ @* M
  33. }$ K+ g. Z4 S' `4 f
  34. $_SESSION['code']=$code;//存储在session里, d% S( M+ P, ~9 f4 E
  35. for($i=0;$i<200;$i++){
    ) O% }! l9 a2 ~$ k& W: g, {
  36.     $pointColor=imagecolorallocate($image, rand(100, 255), mt_rand(100, 255), rand(100, 255));/ A$ L/ q' V7 G
  37.     imagesetpixel($image, mt_rand(0, 100), rand(0, 30), $pointColor);
    * j, v: {% c) i% s
  38. }& v: P4 @3 ~; I- a
  39. for($i=0;$i<2;$i++){
    ) l, r) V. D/ d& F. r6 T
  40.     $linePoint=imagecolorallocate($image, rand(150, 255), rand(150, 255), rand(150, 255));
    $ A" A+ K4 S% j& C4 Z9 B, L% P
  41.     imageline($image, rand(10, 50), rand(10, 20), rand(80,90), rand(15, 25), $linePoint);0 s5 _, T% U8 L- I7 ^
  42. }2 K0 R8 _# s7 ]. u- A9 Q( W: B
  43. imagepng($image);$ x$ i) A4 U! u& P2 a
  44. imagedestroy($image);
      j+ k" V7 w/ G) A5 S2 @

  45. 7 Q0 ^1 X* v9 q; r  [+ ]$ _( f- f/ V
  46. ?>
复制代码
" _. P# @( C8 z6 a0 k
form.php1 h5 }) I" L# n
  1. <?php
    $ ]: g( ~/ D2 ^! l# N
  2.     if(isset($_REQUEST['code'])){
    3 k( X. y  `1 S% l5 p1 @
  3.          session_start();
    ! p4 [* `# r. e; u! b
  4.         if($_REQUEST['code']==$_SESSION['code']){9 g9 S! D  Q% z2 f8 ]/ O& W
  5.             echo "<font color='red'>输入正确</font>";
    / f' y' N, Y/ C% c
  6.         }else{; i2 r5 ~0 R( F6 X; m& Y0 X0 d
  7.             echo "<font color='red'>输入错误</font>";9 X. r. x( j1 a
  8.         }
    9 m) i. m, g$ n  H7 }7 L9 F6 T
  9.     }
    - l7 Q( K9 r. n$ H& m0 W
  10. ?>  d% ]! g- Q2 ?% A  u
  11. <!DOCTYPE html>
    . g5 Z/ ~; Q" O' d* ^
  12. <html>
    8 N7 X* b, ~! a% D
  13.     <head>
    / f* Z# |0 t" t4 h
  14.         <meta chartset="UTF-8" />
    , B. @, {8 w; f
  15.         <style type="text/css" rel="stylesheet">9 ~0 K( ~3 s  N' X
  16.             a{
    0 S) C. g' J$ }3 L# ~- V
  17.                 text-decoration:none;1 [" V/ ?; S7 c' I' [! E- J
  18.                 font-size:30px;3 i8 Z  e4 t( A$ Z
  19.                 color:blue;6 S  h, D# V/ i. Y9 c
  20.             }# m1 X9 D, x7 q( L7 S$ P
  21.             a:hover{
    & O) ?9 H4 b; |+ c3 _3 _* W
  22.                 text-decoration:underline;/ q- j, b! t" q* G" U4 O
  23.             }
    ( F; K0 H, Q. W" H1 u7 y" t
  24.         </style>  ~+ Q+ f: B3 _6 W
  25.     </head>: R* F. x  A4 l" k- |
  26.     <body>6 x0 Q" d, Z. S0 Z4 {
  27.         <form action="form.php" method="get">6 U- r. U( y0 {
  28.             验证码:  <img id="img" src="index.php?" onclick="changeCode()"/>
    $ `2 l$ v$ Q! P5 a: {
  29.             <a href="javascript:void(0)" onclick="changeCode()">看不清?</a> <br />
    2 B3 [7 B# Z* _" u3 O
  30.             请输入验证码: <input name="code" /><br />
      c8 S: M3 l) Y, }; q, I8 ^8 ~
  31.             <input type="submit" value="提交" />* v" s! F6 }1 V! l+ z* @
  32.         </form>! A4 _  U3 }% p: n. p3 J" n7 U
  33.     </body>
    $ N0 x  F9 E* F' {( q+ u
  34.     <script type="text/javascript">
    . }, ]3 G9 K/ r2 t; C4 u' u0 T
  35.         
    ; {4 ]; `6 X+ n. G! ?* O
  36.         function changeCode(){8 L% z6 d* ]6 @  A8 T( y
  37.             var img=document.getElementById('img');1 J1 _" R8 D- [: x/ m1 X
  38.             //img.src='index.php?r='+Math.random();
    + l! N+ T9 J8 {' V
  39.             img.setAttribute('src','index.php?r='+Math.random());2 z9 D+ [- Z8 [' m6 }5 i3 A  B
  40.         }
    3 V- C0 I2 V# Z+ X
  41.     </script>
    6 `' U7 X  l2 E8 l
  42. </html>
复制代码

# Z( D# }" z2 f# C1 x- I0 R9 D: K6 J* P) _  U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 20:27 , Processed in 0.115733 second(s), 19 queries .

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