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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[php学习资料] 验证码

[复制链接]
跳转到指定楼层
楼主
发表于 2018-12-16 01:00:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
index.php
6 e. ^2 u$ q$ w( L% }7 Y7 K# o8 D
  1. <?php% [" d: r; M, r. D; p' C
  2. session_start();
    6 X, K) |, [9 ?2 D
  3. // 丢弃输出缓冲区的内容 **
    * y6 ?4 E; N) |2 ^& X
  4. ob_clean();( C4 d( z  h. w: Z0 i! ~: x$ S
  5. header ('Content-Type: image/png');$ |4 A' s/ u7 U& f# x; C& a4 b
  6. // 1 创建画布
    & }7 F. \) N3 [1 h1 ^2 E
  7. $image=imagecreatetruecolor(100, 30);  W" O5 d# w: j( D2 {( d' q6 v
  8. // 2 画一个矩形并填充背景颜色为白色
    7 w1 t& G  Y% n& q: Z- v+ w3 k& p
  9. $color=imagecolorallocate($image, 255, 255, 255);, ~5 ?$ q4 p+ m2 m: |/ R$ y; Q
  10. imagefill($image, 20, 20, $color);* n: s8 \& s: `# ~& \8 k: @1 @
  11. // for($i=0;$i<4;$i++){
    % R; p) T* T- S  l6 b
  12.     // $font=6;2 R1 T; H2 a4 e% ]* S
  13.     // $x=rand(5,10)+$i*100/4;% g8 X. i4 ]! J$ n  C; ~' ]$ U# W
  14.     // $y=rand(8, 15);
    9 h" z; L$ `" [: N* ^
  15.     // $string=rand(0, 9);) d; @! \' l# ^/ \' ^7 [9 w9 {
  16.     // $color=imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));: A: f6 t3 R4 \0 _3 a( a* i
  17.     // imagestring($image, $font, $x, $y, $string, $color);4 U3 {' m+ B) m& O  s# a8 \
  18. // }3 b3 Q8 Q, g  k9 s8 n: {% B
  19. $code='';: C- q. _+ B' S* x* a: v4 o, O. G  H
  20. for($i=0;$i<4;$i++){
    4 W7 M4 C9 S; W3 H# ~0 S/ O( j
  21.     $fontSize=8;+ q( v% R0 M9 {, x+ b
  22.     $x=rand(5,10)+$i*100/4;
    ! g" c) `; K+ P3 z
  23.     $y=rand(5, 15);
    4 f" G* @* [9 k- s5 X  V& l
  24.     $data='abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHJKLMNPQRTUVWXYZ';
    - s$ U* \8 G0 D& h
  25.     $string=substr($data,rand(0, strlen($data)),1);
    $ l" Q2 g4 Q  Y% h
  26.     $code.=$string;
    4 L( g& ~7 Y6 L% T' T: q
  27.         // 3.2 加载自定义字体
    & W# i' M+ J2 Q8 ^
  28.         $font_file = '1.ttf';7 k) c' M; \( ]; ~9 H4 o
  29.     $color=imagecolorallocate($image,rand(0,120), rand(0,120), rand(0,120));
    3 Y2 N8 K) w/ y+ s$ b
  30.         // 把文字填充到画布
    " d1 p. l. m8 L$ P3 w) `
  31.         //imagefttext($image, 10, mt_rand(-5, 10), $x, $y, $color, $font_file, $string);
    7 ^: ?0 Y- D) a% ]: A. |( ~1 V- b
  32.     imagestring($image, $fontSize, $x, $y, $string, $color);
    & h' v* o7 E0 D7 i- O1 [6 O
  33. }, d2 R; v) J3 f# l) W# Y4 ~
  34. $_SESSION['code']=$code;//存储在session里0 G6 M8 K" W4 J
  35. for($i=0;$i<200;$i++){
    & `% }5 ]8 N0 j* [$ Y
  36.     $pointColor=imagecolorallocate($image, rand(100, 255), mt_rand(100, 255), rand(100, 255));
    9 d3 ^# C1 J1 F& \. k, L) F
  37.     imagesetpixel($image, mt_rand(0, 100), rand(0, 30), $pointColor);
    : b) @- z4 D7 e" J5 m, N
  38. }9 l6 P% Y8 |8 `
  39. for($i=0;$i<2;$i++){
    ! Z. S8 X( B! Q3 D
  40.     $linePoint=imagecolorallocate($image, rand(150, 255), rand(150, 255), rand(150, 255));
    0 n1 u! ]' t+ N. Z8 D7 }# O
  41.     imageline($image, rand(10, 50), rand(10, 20), rand(80,90), rand(15, 25), $linePoint);8 a; v* G9 A( f% |# z
  42. }
    + {3 y1 g. c( `* R
  43. imagepng($image);  d$ ]- W5 \$ W2 S/ m( m4 z
  44. imagedestroy($image);
    7 X# ?6 ?1 k  N! q
  45. # [: B" ^! v, c  v  K+ b% y. U
  46. ?>
复制代码

' [; b; n# a' Dform.php+ R1 P0 }2 `1 O8 q4 b  N7 C# y, S8 v
  1. <?php
      [4 V9 g% c& o8 m" y
  2.     if(isset($_REQUEST['code'])){1 S7 |; Y4 f* O- T5 u. Z2 h
  3.          session_start();- u+ Y: E6 O# f! ^+ p  B
  4.         if($_REQUEST['code']==$_SESSION['code']){) W4 j6 O* X& `4 E2 P3 j
  5.             echo "<font color='red'>输入正确</font>";4 o8 v! q( z0 ]1 a- A8 ~
  6.         }else{' O2 m3 q* @9 I8 ^7 y9 }
  7.             echo "<font color='red'>输入错误</font>";
    6 u& u0 b4 u& Z
  8.         }
    , u* p0 j& z: X; ]* E& V& W0 q9 d
  9.     }, @" D. f# z5 Z3 d
  10. ?>
    " `! K) L9 M" }8 H2 f" t
  11. <!DOCTYPE html>
    % Q4 C0 E$ L0 ]
  12. <html>/ D' W2 W% Q: i* K: L4 `
  13.     <head>( k: B; F' M5 P( r' u- D& Y
  14.         <meta chartset="UTF-8" />" I' U% L& A" i3 _4 o
  15.         <style type="text/css" rel="stylesheet">
    8 D: }; w% O; C- n3 e* S- D' b% @& b
  16.             a{
    6 ?, s% i% U* p4 g+ ?9 ?* V  `) i: R8 k% ^
  17.                 text-decoration:none;; b/ @6 l0 |* }* G. ^5 m4 r& N
  18.                 font-size:30px;" {+ \- [0 j0 I! C- {8 \
  19.                 color:blue;
    1 v; @7 p- O5 x* A* I1 d& `7 }
  20.             }5 w; e8 F$ q* u0 W7 m
  21.             a:hover{& V4 c. C) k) w9 @! }- e( L
  22.                 text-decoration:underline;
    " f) K% H" S& ?3 z* @' }7 V, o
  23.             }
    ! }" N& w6 W0 `' k
  24.         </style>
    & T% ]1 _* L9 }" c4 q$ {
  25.     </head>( K0 d# d- l  m/ C5 i
  26.     <body>
    , [8 N7 H& A" Z* C9 ^9 B$ i) u5 w4 K
  27.         <form action="form.php" method="get">( _5 w7 Z% o4 J* Q" h/ w' Z
  28.             验证码:  <img id="img" src="index.php?" onclick="changeCode()"/>. I& s, ^6 m; x2 L: ~8 N
  29.             <a href="javascript:void(0)" onclick="changeCode()">看不清?</a> <br />( `% I+ a5 w& `! |% L! e
  30.             请输入验证码: <input name="code" /><br />
    / k* s# `# R: {4 f5 ]- F; P& h$ S9 I
  31.             <input type="submit" value="提交" />
    * y( g$ {; B  q  D& h1 c
  32.         </form>
    - w5 G$ ?; r% j* s' P9 R4 I/ Q7 Z0 S
  33.     </body>) e& o3 c) Z4 Q' Z' G( |
  34.     <script type="text/javascript">* F! y+ |) `6 @/ A! p" o
  35.         
    9 G9 S% x! }$ z1 y0 v9 f1 L
  36.         function changeCode(){
    ' m4 a+ U1 v* ^5 }5 u2 L
  37.             var img=document.getElementById('img');7 p6 w# O& w: n# q7 n$ F& D5 N2 {6 l0 v
  38.             //img.src='index.php?r='+Math.random();# B, y, T3 s& o
  39.             img.setAttribute('src','index.php?r='+Math.random());3 f) E7 W/ s% n' D
  40.         }& M. i0 O/ m1 }; q" N6 R3 `
  41.     </script>
    & ^7 @/ F& A! U' c- V
  42. </html>
复制代码
6 ~; l) w  p" A5 V! v# e( w

- ?) d- c4 d$ y- [2 }1 n# |6 b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 14:48 , Processed in 0.129748 second(s), 22 queries .

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