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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[php学习资料] 验证码

[复制链接]
跳转到指定楼层
楼主
发表于 2018-12-16 01:00:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
index.php4 R( }3 ~& y# V5 a- b& f$ A" d7 ^
  1. <?php
    : q- w8 v6 N8 S& i
  2. session_start();" N- M! x$ V9 x$ z$ g6 v# H( d
  3. // 丢弃输出缓冲区的内容 **4 ^+ C/ I: b5 X; C* S: ?9 z
  4. ob_clean();
    - F! q! d+ B5 b( Q
  5. header ('Content-Type: image/png');
    " `; _. b0 p* B5 z( n, u
  6. // 1 创建画布
    " r9 @# r- J6 R/ Q- }5 o
  7. $image=imagecreatetruecolor(100, 30);
    2 R6 q/ S6 K5 d/ f3 C5 a+ Q! x7 o1 z
  8. // 2 画一个矩形并填充背景颜色为白色
    ( A# k% W* j$ i4 s9 C
  9. $color=imagecolorallocate($image, 255, 255, 255);
    / x' @6 \. `# V) y4 {# p
  10. imagefill($image, 20, 20, $color);
    ( A9 I0 d( d: b  k
  11. // for($i=0;$i<4;$i++){; M) b8 m' }3 o3 Q9 q& p; E2 U- a
  12.     // $font=6;) K9 f; N7 `1 _% ]( z: H- a
  13.     // $x=rand(5,10)+$i*100/4;
    . g7 I$ q: i  Q/ z) S% u/ M; ?
  14.     // $y=rand(8, 15);* S9 o7 Q* A+ `5 {; D" y
  15.     // $string=rand(0, 9);8 Q6 U* u2 @( o. P- v9 g( t
  16.     // $color=imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
    4 o8 L& N6 H' A0 l$ G$ W3 ?
  17.     // imagestring($image, $font, $x, $y, $string, $color);
    ' g3 \+ I' ?* \  r4 W
  18. // }2 n, u, g$ y0 `* ]5 `
  19. $code='';
    3 B) t* C. t" q5 I: b( n) Q# z# N2 l/ a
  20. for($i=0;$i<4;$i++){) a# ?- H& ~* W( e/ F  p2 w
  21.     $fontSize=8;
    # G* o$ `% l* w( ^
  22.     $x=rand(5,10)+$i*100/4;
    : x1 y& o9 q) t& z; H2 r/ R
  23.     $y=rand(5, 15);# `# ?( v1 d0 i3 h4 c8 d- u
  24.     $data='abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHJKLMNPQRTUVWXYZ';
    9 R, w1 f4 R% N+ j. h+ D
  25.     $string=substr($data,rand(0, strlen($data)),1);
    * G4 ]" p" T, |/ A6 |
  26.     $code.=$string;( u8 {8 L" u0 N' I6 f) r
  27.         // 3.2 加载自定义字体5 @, O0 Z5 r/ |7 {7 f! l
  28.         $font_file = '1.ttf';8 [' f0 N5 c) W
  29.     $color=imagecolorallocate($image,rand(0,120), rand(0,120), rand(0,120));6 Q3 f& J$ F, ]# L3 s, J: x
  30.         // 把文字填充到画布. U: p3 W. A- A7 R
  31.         //imagefttext($image, 10, mt_rand(-5, 10), $x, $y, $color, $font_file, $string);" F! s# G7 r( s0 D- r3 g& V$ m7 N
  32.     imagestring($image, $fontSize, $x, $y, $string, $color);
    ) M  E" i% p2 K% j9 E" I
  33. }
    4 T1 r5 Z" s) ~" e4 D8 l: w
  34. $_SESSION['code']=$code;//存储在session里8 V2 b" A) U4 O
  35. for($i=0;$i<200;$i++){* a# ?  P$ P4 v! C8 x
  36.     $pointColor=imagecolorallocate($image, rand(100, 255), mt_rand(100, 255), rand(100, 255));
    & `: e* ?0 d: K
  37.     imagesetpixel($image, mt_rand(0, 100), rand(0, 30), $pointColor);
    0 ?9 J( L: ?  f+ K  Y2 j( g$ r
  38. }7 \$ R! s9 O. ?$ T, D- j
  39. for($i=0;$i<2;$i++){
    9 f. _& @6 @) A! U7 {
  40.     $linePoint=imagecolorallocate($image, rand(150, 255), rand(150, 255), rand(150, 255));
    4 n$ o$ Z7 }8 o2 q% \
  41.     imageline($image, rand(10, 50), rand(10, 20), rand(80,90), rand(15, 25), $linePoint);
    ) `- s9 Z8 b: E
  42. }% G) ^. f. ^% Z
  43. imagepng($image);
    6 W, M1 q3 N8 k4 i! g5 |
  44. imagedestroy($image);0 E! M* E! |9 n3 m
  45. , v6 L4 f" b: e5 P% R& X, L; s0 f
  46. ?>
复制代码

/ N$ \( m( l7 h; b3 w' dform.php) v5 a6 T4 |; H( D6 i3 w) v
  1. <?php
    * V; F' s2 J! ^0 `  g2 O7 x  A
  2.     if(isset($_REQUEST['code'])){" N$ h6 M  F$ [( }4 U
  3.          session_start();
    3 W. r: m! f1 z) O
  4.         if($_REQUEST['code']==$_SESSION['code']){; z: O' _& H7 \8 B  X+ }. z% D
  5.             echo "<font color='red'>输入正确</font>";7 ~1 n- }8 d, J4 W. W
  6.         }else{6 s. }5 K5 l% |% z! Q2 j: D8 i7 x
  7.             echo "<font color='red'>输入错误</font>";2 k1 J  ^  b+ q6 d: a: A0 u
  8.         }/ z: J: a* i6 a
  9.     }# Y7 Y6 Q9 x$ {8 W4 t0 A! G/ _9 [
  10. ?>' f7 Q: _# m# V  `% {
  11. <!DOCTYPE html>9 D9 X8 B5 ~0 J# [# X! L
  12. <html>9 b9 Q/ C, {, j. ~- l5 h
  13.     <head>" j8 y& s9 t, r* k
  14.         <meta chartset="UTF-8" />
    ( a1 b' h3 J  v$ M. y8 G
  15.         <style type="text/css" rel="stylesheet">
    4 B+ a- x, W8 Q; u& ]+ _$ m
  16.             a{
    8 @) K! W4 E. F& V. t
  17.                 text-decoration:none;
    9 O. n. G5 b8 d' B7 t/ w/ A  U
  18.                 font-size:30px;* q# A5 s0 Z# C
  19.                 color:blue;  e4 W( D2 }3 |$ `5 l, ?0 J
  20.             }
    ) B4 f: R8 ?- I
  21.             a:hover{5 A) S5 W0 _4 i3 u
  22.                 text-decoration:underline;
    0 e! J+ M: V, \$ _/ @
  23.             }: {6 O% q7 S! T# t5 |1 K' n
  24.         </style>) L* r4 n3 n% L/ r( z4 y0 r
  25.     </head>9 N: O1 {& @2 ]/ I: P, M! O
  26.     <body>' M2 f) v0 z$ A+ ]. {
  27.         <form action="form.php" method="get">
    ! ^0 R, P9 [5 a0 l. U5 o7 z' I3 M
  28.             验证码:  <img id="img" src="index.php?" onclick="changeCode()"/>+ p& \2 `+ v( b
  29.             <a href="javascript:void(0)" onclick="changeCode()">看不清?</a> <br />
    1 g7 t0 g  y3 ?3 F. ^8 b! Z+ V
  30.             请输入验证码: <input name="code" /><br />
    3 k* E1 M7 o* R
  31.             <input type="submit" value="提交" />
    : v: b8 g! g: q/ a: w& Q# L# v3 U6 [
  32.         </form># D4 j6 s7 @9 o" J1 S, k$ P
  33.     </body>8 r3 \* a- Y9 s# ~5 j" f( b
  34.     <script type="text/javascript">
    8 M" s- G& \+ j# T7 l/ L) [0 y  X
  35.         
    & s4 H# m& K. L
  36.         function changeCode(){
    7 M( ^% H3 [5 n5 o
  37.             var img=document.getElementById('img');0 `. R: `# B; _8 J: S: a8 x4 t1 l
  38.             //img.src='index.php?r='+Math.random();; Q3 u1 @2 v3 a
  39.             img.setAttribute('src','index.php?r='+Math.random());
    . Z: y/ g& \; E
  40.         }5 _5 v% m/ ?0 S
  41.     </script>  Q7 G% ]$ v% j8 X$ {3 n/ A/ ]
  42. </html>
复制代码

' v/ t' O, g. T( G- N% F4 V4 Z7 s3 I- Z/ j( |5 `5 `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 11:53 , Processed in 0.119653 second(s), 20 queries .

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