94)圖片驗證碼
阿新 • • 發佈:2017-08-21
圖片 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)圖片驗證碼