今天小編就為大家?guī)?lái)一篇PHP實(shí)現(xiàn)帶有干擾線的驗(yàn)證碼,干擾點(diǎn)、字符傾斜的文章。小編覺(jué)得挺不錯(cuò)的,為此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。
金湖網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),金湖網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為金湖近千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的金湖做網(wǎng)站的公司定做!PHP生成驗(yàn)證碼的類(lèi)代碼,本驗(yàn)證碼類(lèi)支持生成干擾點(diǎn)、干擾線等干擾像素,還可以使字符傾斜。在類(lèi)中你可以定義驗(yàn)證碼寬度、高度、長(zhǎng)度、傾斜角度等參數(shù),后附有詳細(xì)用法:
<?php class class_authcode{ public $authcode = ''; //驗(yàn)證碼 private $width = ''; //驗(yàn)證碼圖片寬 private $height = ''; //驗(yàn)證碼圖片高 private $len = ''; //驗(yàn)證碼長(zhǎng)度 private $tilt = array(-30,30);//驗(yàn)證碼傾斜角度 private $font = 'AlteHaasGroteskBold.ttf';//字體文件 private $str = ''; //驗(yàn)證碼基 private $im = ''; //生成圖片的句柄 //構(gòu)造函數(shù) function __construct($width=100,$heigh=30,$len=4) { $this->width = $width; $this->height = $heigh; $this->len = $len; $this->str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; $str_len = strlen($this->str)-1; for ($i=0; $i<$len; $i++) { $this->authcode .= $this->str[rand(0,$str_len)]; } } //生成驗(yàn)證碼圖片 private function imagecreate(){ $this->im = imagecreatetruecolor($this->width,$this->height); } //干擾顏色 private function ext_color() { return imagecolorallocate($this->im,rand(50, 180),rand(50, 180),rand(50, 180)); } //生成干擾點(diǎn) private function ext_point() { for ($i=0; $i<$this->width*2; $i++) { imagesetpixel($this->im,rand(1,$this->width-1),rand(1,$this->height-1),$this->ext_color()); } } //生成干擾線 private function ext_line() { for ($i=0; $i<$this->len; $i++) { $x1 = rand(1,$this->width-1); $y1 = rand(1,$this->height-1); $x2 = rand(1,$this->width-1); $y2 = rand(1,$this->height-1); imageline($this->im,$x1,$y1,$x2,$y2,$this->ext_color()); } } //把驗(yàn)證碼寫(xiě)入圖片(不能和$this->imgstrfloat()同時(shí)使用) private function imgstr() { $old_x = 1; for ($i=0; $i<$this->len; $i++) { $fontsize = rand(2,5); //字體大小 $tmp_1 = $fontsize*2.5; $tmp_2 = $i>0 $tmp_1 : 0; $y = rand(1,$this->height/2); $x = rand($old_x+$tmp_2, ($i+1)*($this->width)/$this->len-$tmp_1); $old_x = $x; $color = imagecolorallocate($this->im,rand(200, 255),rand(200, 255),rand(200, 255)); imagestring($this->im,$fontsize,$x,$y,$this->authcode[$i],$color); } } //把驗(yàn)證碼傾斜寫(xiě)入圖片(注意這里不能和$this->imgstr()方法同時(shí)使用) private function imgstrfloat() { $old_x = 1; for ($i=0; $i<$this->len; $i++) { $fontfloat = rand($this->tilt[0],$this->tilt[1]); $fontsize = rand(10,15); //字體大小 $tmp_1 = $i>0 $fontsize : 0; $y = rand($fontsize+2, $this->height-2); $x = rand($old_x+$tmp_1+2, ($i+1)*($this->width)/$this->len-$fontsize-2); $old_x = $x; $color = imagecolorallocate($this->im, rand(200, 255), rand(200, 255), rand(200, 255)); imagettftext($this->im, $fontsize, $fontfloat, $x, $y, $color, $this->font, $this->authcode[$i]); } } //輸出驗(yàn)證碼圖片 function output() { $this->imagecreate(); $this->imgstr(); //$this->imgstrfloat(); $this->ext_point(); $this->ext_line(); header('content-type:image/png'); imagepng($this->im); imagedestroy($this->im); } } ?>
本驗(yàn)證碼用法說(shuō)明:
$obj = new class_authcode();//實(shí)例化對(duì)象,并設(shè)置驗(yàn)證碼圖片的寬、高和驗(yàn)證碼的長(zhǎng)度 $obj->$authcode; //獲取驗(yàn)證碼 $obj->output(); //輸出驗(yàn)證碼圖片
以上就是PHP實(shí)現(xiàn)帶有干擾線的驗(yàn)證碼,干擾點(diǎn)、字符傾斜的簡(jiǎn)略介紹,詳細(xì)使用情況還需要大家自己使用過(guò)才領(lǐng)會(huì)。如果想了解更多,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
名稱(chēng)欄目:PHP實(shí)現(xiàn)帶有干擾線的驗(yàn)證碼,干擾點(diǎn)、字符傾斜-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://bm7419.com/article38/dsecsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站內(nèi)鏈、App開(kāi)發(fā)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容