94)图片验证码

(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);

 

posted @ 2017-08-21 19:42  小油菜1  阅读(463)  评论(0编辑  收藏  举报