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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[php学习资料] 验证码

[复制链接]
跳转到指定楼层
楼主
发表于 2018-12-16 01:00:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
index.php7 M% |% E6 j& e
  1. <?php" I2 a8 _+ S& K+ w8 v' [! o
  2. session_start();
    6 K  A& j! ^9 V# g9 q
  3. // 丢弃输出缓冲区的内容 **! I; G5 w0 _1 l2 Q
  4. ob_clean();
    : p7 i+ c8 |+ ~
  5. header ('Content-Type: image/png');
    ' p3 C: t4 }/ e; p# Y
  6. // 1 创建画布
    & q6 T0 M$ z3 I& f, D& ]" ^0 D( e4 Y3 ~
  7. $image=imagecreatetruecolor(100, 30);3 n# i- i% |& k2 N1 x( E
  8. // 2 画一个矩形并填充背景颜色为白色
    ) q" `: S4 V4 T* r  ^3 t+ k- a0 g
  9. $color=imagecolorallocate($image, 255, 255, 255);, ^$ k$ M9 G# j2 P1 c$ M
  10. imagefill($image, 20, 20, $color);
    + \& t% i" Z9 H( E
  11. // for($i=0;$i<4;$i++){
    : u4 o" T- P4 ~/ [" k$ ?
  12.     // $font=6;$ s7 e2 L* L8 z  [. B8 A: P
  13.     // $x=rand(5,10)+$i*100/4;- u) d7 I9 ]2 C
  14.     // $y=rand(8, 15);
    5 H) g. @' U6 K& Z/ |; U4 S
  15.     // $string=rand(0, 9);2 v1 ]# V0 V2 ?+ u3 I1 s2 l
  16.     // $color=imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
    ) G0 e9 ^7 m6 D: w; E5 H
  17.     // imagestring($image, $font, $x, $y, $string, $color);5 H( B- y; c$ d! i2 [" L* L
  18. // }' [1 S9 |3 Z6 D  F  }. d! v, Y# `
  19. $code='';
    , |6 A- F; o* j
  20. for($i=0;$i<4;$i++){; A& e, P: ?+ F
  21.     $fontSize=8;, I  Y+ m9 p/ E3 B3 e) t
  22.     $x=rand(5,10)+$i*100/4;
    + e0 ^  r# B8 n( ?
  23.     $y=rand(5, 15);
    $ L" w5 O6 l! o% h% c- W$ {" h; w- u
  24.     $data='abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHJKLMNPQRTUVWXYZ';+ A% d( \( z, V! _6 u" j
  25.     $string=substr($data,rand(0, strlen($data)),1);
    ! t( J+ @  q9 E1 J
  26.     $code.=$string;
    0 R# n, j  X; q% Y
  27.         // 3.2 加载自定义字体
    , A& b& y3 Y7 n; O" C2 ^
  28.         $font_file = '1.ttf';
    . M" y' p. n* y* `
  29.     $color=imagecolorallocate($image,rand(0,120), rand(0,120), rand(0,120));
    4 m* e1 J' r$ S- x" g; ]
  30.         // 把文字填充到画布
    1 [, F3 O+ O& E+ h9 K4 }3 e4 `3 I
  31.         //imagefttext($image, 10, mt_rand(-5, 10), $x, $y, $color, $font_file, $string);
    ( z$ }; o; s2 T6 B2 S" {
  32.     imagestring($image, $fontSize, $x, $y, $string, $color);
    , v4 r9 y) V' g2 ]: U& i( q
  33. }
    # W' Y  W' U! J
  34. $_SESSION['code']=$code;//存储在session里3 s8 L( b* z# z
  35. for($i=0;$i<200;$i++){
    3 P3 P  I; q# w. i( f! W
  36.     $pointColor=imagecolorallocate($image, rand(100, 255), mt_rand(100, 255), rand(100, 255));) n* g9 ]8 p# Z; t! P. D" h
  37.     imagesetpixel($image, mt_rand(0, 100), rand(0, 30), $pointColor);
    + {. n; y% T+ C
  38. }4 z! k+ l% a! x9 ]# \
  39. for($i=0;$i<2;$i++){
    $ C- `, u7 ~* i$ ~
  40.     $linePoint=imagecolorallocate($image, rand(150, 255), rand(150, 255), rand(150, 255));
    ! X6 f7 k$ m% q1 c  g" S
  41.     imageline($image, rand(10, 50), rand(10, 20), rand(80,90), rand(15, 25), $linePoint);1 i; `4 R) E3 v* I
  42. }. l# D. o- W( g
  43. imagepng($image);
    # Q* c( i0 x! \4 y& |8 T, O7 B
  44. imagedestroy($image);
    ) X) t; P" t$ h9 _
  45. 1 ]% `# W# I% t# e8 w
  46. ?>
复制代码

. |6 _% f3 A: R2 C& h' Qform.php
* l( l1 D# I7 h: @/ x
  1. <?php
    % @* ]2 F$ n# P; ^; B
  2.     if(isset($_REQUEST['code'])){. l( V, Z7 @8 `! L& F" o
  3.          session_start();
    8 j, O  o) {9 b% b* Z
  4.         if($_REQUEST['code']==$_SESSION['code']){
    . O1 y) P2 }# b3 x" G) f
  5.             echo "<font color='red'>输入正确</font>";% i" z' W) C: @7 Z4 ]
  6.         }else{. A4 L! q$ E# T& M; y: R
  7.             echo "<font color='red'>输入错误</font>";
    " W7 ~4 m5 y; x
  8.         }% D5 y$ I+ w2 ?) j
  9.     }. r5 l. X* A6 [4 S1 S
  10. ?>0 ?. Z0 s9 C- c
  11. <!DOCTYPE html>3 Q* s2 g' R4 K9 }( U0 `8 ]
  12. <html>
    . S% T% s, h, S7 L
  13.     <head>
    - i/ f: M8 T" `% y. c
  14.         <meta chartset="UTF-8" />
    7 k" [" e( {4 \
  15.         <style type="text/css" rel="stylesheet">
    - g+ Y( N0 j4 l
  16.             a{. @' S3 q9 W" t2 \: Z, @$ K( D- ]
  17.                 text-decoration:none;6 `" D+ Y1 P* o
  18.                 font-size:30px;' N& x3 s* r: p  z) u0 @
  19.                 color:blue;
      R7 v/ g) B! s0 H, {/ v$ B% U" q
  20.             }0 C7 E* [$ F# W, t
  21.             a:hover{, ]$ y1 b0 D1 D
  22.                 text-decoration:underline;/ z. |) W' {4 j: j) ?7 T5 u, @
  23.             }" p3 C5 t! d$ c. a! j" T& T
  24.         </style>5 D5 ^2 w; Z3 k
  25.     </head>
    9 e4 y. }% l' [" [) N' U0 ]7 x$ @
  26.     <body>
    ) L+ y) q1 ?3 Z4 P! D: e* X, E
  27.         <form action="form.php" method="get">
    7 v" I2 |$ Z4 ~" d
  28.             验证码:  <img id="img" src="index.php?" onclick="changeCode()"/>  ~( c  m# O! \+ w$ U
  29.             <a href="javascript:void(0)" onclick="changeCode()">看不清?</a> <br />3 t  n; a# m6 [& z8 s% L- K/ G" D
  30.             请输入验证码: <input name="code" /><br />& Q4 _' f5 C5 Z: i7 O& t/ W4 K4 z
  31.             <input type="submit" value="提交" />
    . ?0 Z4 r2 n9 Q9 m
  32.         </form>
    * Y9 _. F1 g! t2 K2 d
  33.     </body>4 i& C4 N% U! D1 q( k# @) _. o( E* V
  34.     <script type="text/javascript">
    5 ?" B. T3 O) ^& j, w2 n
  35.         * G7 h0 [/ r$ X5 }, T$ y$ H
  36.         function changeCode(){, e5 J6 W) r( `6 ?
  37.             var img=document.getElementById('img');
    - S1 D. G; |4 C9 o
  38.             //img.src='index.php?r='+Math.random();
    " o, C( B, M1 f2 d
  39.             img.setAttribute('src','index.php?r='+Math.random());, o0 m6 P. Y+ c9 R! R2 q2 _1 K- v
  40.         }
    ; C2 f, o5 J. U+ ]' i
  41.     </script>
    + R% T1 w0 w- q5 e3 _( z
  42. </html>
复制代码

8 z4 n/ b. e2 e' X1 D: t9 B- Z- N: a3 i/ \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 16:28 , Processed in 0.104480 second(s), 19 queries .

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