資源描述:
《PHP驗(yàn)證碼類實(shí)現(xiàn)驗(yàn)證碼功能.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、PHP驗(yàn)證碼類實(shí)現(xiàn)驗(yàn)證碼功能,有兩個(gè)方法,分別是用內(nèi)置字體和自定義字體生成驗(yàn)證碼。具體代碼如下: <?php /** *驗(yàn)證碼生成類 *@example *$pic=newuImage(); *$code=$pic->getVerifyCode(); *header("Content-type:image/png"); *$pic->captchaFromFont($font='RAVIE.TTF');or$pic->captcha(); */ classuImage{ /** *驗(yàn)證碼字符 *@ac
2、cessprotected */ protected$code; /** *生成圖片驗(yàn)證碼,直接輸出的是圖片,字體大小是內(nèi)置字體,最大是5 *@accesspublic *@paramint$width驗(yàn)證碼圖片寬度 *@paramint$height驗(yàn)證碼圖片的高度 *@paramint$snow背景雪花的數(shù)量 *@paramint$line干擾線的條數(shù) */ publicfunctioncaptcha($width=100,$height=30,$snow=80,$line=3){ $pic=imagecreatetrue
3、color($width,$height); $backageColor=imagecolorallocate($pic,0xFF,0xFF,0xFF); imagefill($pic,0,0,$backageColor); //打雪花 for($i=0;$i<=$snow;$i++){ $color=imagecolorallocate($pic,mt_rand(150,230),mt_rand(150,230),mt_rand(150,230)); imagechar($pic,1,mt_rand(0,$width),mt_ra
4、nd(0,$height),"*",$color); imagecolordeallocate($pic,$color); } //畫干擾線 for($i=0;$i<=$line;$i++){ $x1=mt_rand(2,$width*0.2); $x2=mt_rand($width*0.8,$width-2); $y1=mt_rand(2,$height-2); $y2=mt_rand(2,$height-2); $color=imagecolorallocate($pic,mt_rand(130,250),mt_rand(
5、130,250),mt_rand(130,250)); imageline($pic,$x1,$y1,$x2,$y2,$color); imagecolordeallocate($pic,$color); } //畫字符 $code=$this->code; $eachW=$width/strlen($code);//圖片依據(jù)字符個(gè)數(shù)分配等份數(shù) $fontWidth=imagefontwidth(5);//取得字體寬度 $fontHeight=imagefontheight(5);//取得字體高度 for($i=0;$i<
6、;strlen($code);$i++){ $color=imagecolorallocate($pic,mt_rand(30,155),mt_rand(30,155),mt_rand(30,150)); $x=mt_rand($eachW*$i,$eachW*($i+1)-$fontWidth); $y=mt_rand(3,$height-$fontHeight); imagechar($pic,5,$x,$y,$code{$i},$color);//水平畫字符 imagecolordeallocate($pic,$color); }
7、 //輸出 ob_start(); ob_clean(); imagepng($pic); imagedestroy($pic); } /** *根據(jù)自定義字體生成驗(yàn)證碼 *@accesspublic *@paramstring$font字符文件,TrueType字體文件,.ttf字體 *@paramint$fontWeight字符大小 *@paramint$width圖片寬 *@paramint$height圖片高 *@paramint$snow背景雪花個(gè)數(shù) *@paramint$line干擾線條數(shù) *@paramin
8、t$padding圖片內(nèi)邊距 */ publicfunctioncaptchaFromFont($fon