您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“PHP實現(xiàn)的驗證碼生成類分享”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
其中類成員codestr是生成的驗證碼字符串:
<?php /** * 驗證碼 */ class Code{ // 1. 定義各個成員 有寬、高、畫布、字數(shù)、類型、畫類型 private $width; //寬度 private $height; //高度 private $num; //驗證碼字數(shù) private $imgType; //生成圖片類型 private $Type; //字串類型 1,2,3 三個選項 1 純數(shù)字 2 純小寫字母 3 大小寫數(shù)字混合 private $hb; //畫布 public $codestr; // 驗證碼字串 public function __construct($height=20,$num=4,$imgType="jpeg",$Type=1){ $this->width = $num*20; $this->height = $height; $this->num = $num; $this->imgType = $imgType; $this->Type = $Type; $this->codestr = $this->codestr(); $this->zuhe(); } // 2. 定義隨機獲取字符串函數(shù) private function codestr(){ switch($this->Type){ case 1: // 類型為1 獲取1-9隨機數(shù) $str = implode("",array_rand(range(0,9),$this->num)); break; case 2: // 類型為2 獲取a-z隨機小寫字母 $str = implode("",array_rand(array_flip(range(a,z)),$this->num)); break; case 3: // 類型為3 獲取數(shù)字,小寫字母,大寫字母 混合 for($i=0;$i<$this->num;$i++){ $m = rand(0,2); switch($m){ case 0: $o = rand(48,57); break; case 1: $o = rand(65,90); break; case 2: $o = rand(97,122); break; } $str .= sprintf("%c",$o); } break; } return $str; } // 3. 初始化畫布圖像資源 private function Hb(){ $this->hb = imagecreatetruecolor($this->width,$this->height); } // 4. 生成背景顏色 private function Bg(){ return imagecolorallocate($this->hb,rand(130,250),rand(130,250),rand(130,250)); } // 5. 生成字體顏色 private function Font(){ return imagecolorallocate($this->hb,rand(0,100),rand(0,100),rand(0,100)); } // 6. 填充背景顏色 private function BgColor(){ imagefilledrectangle($this->hb,0,0,$this->width,$this->height,$this->Bg()); } // 7. 干擾點 private function ganrao(){ $sum=floor(($this->width)*($this->height)/3); for($i=0;$i<$sum;$i++){ imagesetpixel($this->hb,rand(0,$this->width),rand(0,$this->height),$this->Bg()); } } // 8. 隨機直線 弧線 private function huxian(){ for($i=0;$i<$this->num;$i++){ imageArc($this->hb,rand(0,$this->width),rand(0,$this->height),rand(0,$this->width),rand(0,$this->height),rand(0,360),rand(0,360),$this->Bg()); } } // 9. 寫字 private function xiezi(){ for($i=0;$i<$this->num;$i++){ $x=ceil($this->width/$this->num)*$i; $y=rand(1,$this->height-15); imagechar($this->hb,5,$x+4,$y,$this->codestr[$i],$this->Font()); } } // 10. 輸出 private function OutImg(){ $shuchu="image".$this->imgType; $header="Content-type:image/".$this->imgType; if(function_exists($shuchu)){ header($header); $shuchu($this->hb); }else{ exit("GD庫沒有此類圖像"); } } // 11. 拼裝 private function zuhe(){ $this->Hb(); $this->BgColor(); $this->ganrao(); $this->huxian(); $this->xiezi(); $this->OutImg(); } public function getCodeStr(){ return $this->codestr; } } ?>
“PHP實現(xiàn)的驗證碼生成類分享”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。