1. 程式人生 > >94)圖片驗證碼

94)圖片驗證碼

圖片 rand jpg pre turn 存在 簡單 gif格式 alloc

(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)圖片驗證碼