码迷,mamicode.com
首页 > 其他好文 > 详细

94)图片验证码

时间:2017-08-21 20:36:53      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:技术   连接   通过   屏蔽   height   之一   下标   图片验证码   ret   

(1)首先是简单生成四个字符,到底随机产生几个字符是自己设定的:

 

          技术分享

   代码展示:

 1 <?php
 2     
 3     
 4     /**
 5      * 验证码 工具
 6      */
 7    
 8         
 9     
10         /**
11          * 输出生成的验证码输出
12          *
13          * @param $code_len=4 码值的长度
14          * @return void
15          */
16        
17         
18             $chars = ABCDEFGHIJKLMNPQRSTUVWXYZ123456789;//所有可能字符
19             $chars_len = strlen($chars);
20             $code_len=4;//设置码长,这个是自己设定的
21             $code = ‘‘;//初始化码值字符串
22             for($i=1; $i<=$code_len;++$i) {
23                 $rand_index = mt_rand(0, $chars_len-1);//就是堆积生成一个字符------------------就是得到$chars的下标
24                 $code .= $chars[$rand_index];//字符串支持[]操作,通过下标取得某个字符---------------------由下标找到对应的字符,并且每次都连接起来。
25             }
26             echo $code;

    然后我把这个输出的这四个字符存在session中,那么我就可以通过session来访问了:

 

  技术分享

    在b.php中读到session[‘captcha_code‘]的值

1 <?php
2         session_start();
3         echo $_SESSION[captcha_code];

 最好背景图片是两种格式,jpg格式和gif格式,因为有的服务器可能支持其中的一种。

 

 

(2)加了背景图,我随便截的图,一共两张png的图

结果展示:

    技术分享

 

 

    注意点展示:

    技术分享

 

 然后我的代码:
  

 1 <?php
 2     
 3     
 4     /**
 5      * 验证码 工具
 6      */
 7    
 8         
 9     
10         /**
11          * 输出生成的验证码输出
12          *
13          * @param $code_len=4 码值的长度
14          * @return void
15          */
16        
17         
18             $chars = ABCDEFGHIJKLMNPQRSTUVWXYZ123456789;//所有可能字符
19             $chars_len = strlen($chars);
20             $code_len=4;//设置码长,这个是自己设定的
21             $code = ‘‘;//初始化码值字符串
22             for($i=1; $i<=$code_len;++$i) {
23                 $rand_index = mt_rand(0, $chars_len-1);//就是堆积生成一个字符,这个得到上面$chars字符串的下标
24                 $code .= $chars[$rand_index];//由下标找到对应的字符,字符串支持[]操作,通过下标取得某个字符
25             }
26 //            echo $code;
27            
28             //存储于session,用于验证
29             @session_start();//保证session机制一定是开启的,同时重复开启不会报错,@屏蔽错误。
30             $_SESSION[captcha_code] = $code;
31     
32     //生成验证码图片
33     
34     //背景图,随便加的
35     $bg_file =  captcha . mt_rand(1, 2) . .png;
36     
37     //基于jpg格式的图片创建画布
38     $img = imagecreatefrompng($bg_file);
39     
40     //随机分配字符串颜色,就是三分之一的比例
41     $str_color = mt_rand(1, 3) == 1 ? imageColorAllocate($img, 0, 0, 0) : imageColorAllocate($img, 0xff, 0xff, 0xff);
42     
43     //字符串
44     $font = 5;
45     // 画布尺寸
46     $img_w = imageSX($img);
47     $img_h = imageSY($img);
48     // 字体的尺寸
49     $font_w = imageFontWidth($font);
50     $font_h = imageFontHeight($font);
51     // 字符串的尺寸
52     $code_w = $font_w * $code_len;
53     $code_h = $font_h;
54     $x = ($img_w-$code_w)/2;
55     $y = ($img_h-$code_h)/2;
56     imageString($img, $font, $x, $y, $code, $str_color);
57     
58     //输出
59     header(Content-Type: image/jpeg;);
60     imagepng($img);
    //销毁图像
    imageDestory($img);

 

94)图片验证码

标签:技术   连接   通过   屏蔽   height   之一   下标   图片验证码   ret   

原文地址:http://www.cnblogs.com/xiaoyoucai/p/7406272.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!