這篇文章介紹的內容是關於PHP產生指定位元驗證碼與可控幹擾元素第二篇,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
產生驗證碼:檔案名稱為:buildVerifyCode.func.php
<?php//產生指定位元可控混合驗證碼function buildVerifyCode($type,$length){//$type0,1,2可以為數字,大小寫字母,數字加大小寫字母驗證碼//$length指定了驗證碼的長度switch($type){case 0:$string=join('',range(0,9));break;case 1://range('a','z')將括弧中的內容作為索引值產生一個索引數組//array_merge($array1,$array2)合并兩個數組中的索引值,產生新索引數組//join('',$array)以空串連數組中的值,以數組的內容產生字串$string=join('',array_merge(range('a','z'),range('A','Z')));break;case 2:$string=join('',array_merge(range('a','z'),range('A','Z'),range(0,9)));break;}//str_shuffle打亂字串,傳回值是字串,不像shuffle,傳回值是bool$string=str_shuffle($string);//substr截取$length位元的驗證碼return substr($string,0,$length);}
產生圖片驗證碼:檔案名稱為:getVerifyCode.func.php
<?phpfunction getVerifyCodeImg($type=2,$length=4,$pixel=false,$line=false){$width=100;$height=30;//建立畫布,預設黑色底色$image=imagecreatetruecolor($width,$height);//建立白色,用於後面覆蓋黑色的底色$white=imagecolorallocate($image,255,255,255);//建立白色矩形地區,覆蓋原始畫布imagefilledrectangle($image,1,1,$width-1,$height-1,$white);//引入檔案require 'buildVerifyCode.func.php';//調用buildVerifyCode方法$chars=buildVerifyCode($type,$length);for($i=0;$i<$length;$i++){$size=mt_rand(14,16);$angle=mt_rand(-15,15);$x=(100/$length)*$i;$y=mt_rand(20,25);$color=imagecolorallocate($image,mt_rand(70,100),mt_rand(50,120),mt_rand(70,130));$fontfiles=['msyh.ttc','msyhbd.ttc','msyhl.ttc','simsun.ttc','Sitka.ttc'];$fontfile="../fonts/".$fontfiles[mt_rand(0,4)];$text=substr($chars,$i,1);imagettftext($image,$size,$angle,$x,$y,$color,$fontfile,$text);}if($pixel){for($i=0;$i<$pixel;$i++){$color=imagecolorallocate($image,mt_rand(150,160),mt_rand(140,170),mt_rand(130,200));imagesetpixel($image,mt_rand(0,$width-1),mt_rand(0,$height-1),$color);}}if($line){for($i=0;$i<$line;$i++){$color=imagecolorallocate($image,mt_rand(150,180),mt_rand(110,170),mt_rand(140,190));imageline($image,mt_rand(0,$width-2),mt_rand(0,$height-3),mt_rand(0,$width-4),mt_rand(0,$height-5),$color);}}header('content-type:image/png');imagepng($image);}
調用驗證碼:檔案名稱為:getVerifyImg.php
<?php// 測試// require 'buildVerifyCode.func.php';// echo buildVerifyCode(2,4);require 'getVerifyCodeImg.php';/** * $type驗證碼類型,1為純數字,2為大小寫字母,3為數字加大小寫字母 * $length驗證碼長度,建議設定區間為4-6 * $pixel幹擾元素小點,建議設定200 * $line幹擾元素線條,建議設定4 * getVerifyCodeImg($type,$length,$pixel,$line); */getVerifyCodeImg(2,6,200,4);