PHP驗證碼產生類完整代碼_PHP教程

來源:互聯網
上載者:User
本文章提供這款php驗證碼產生類靈活好用,使用者可以定義各個成員 有寬、高、畫布、字數、類型、畫類型同時我們只要修改 $Type就可以定義產生的是純數字 , 純小寫字母,大小寫數字混合,有需要的朋友可參考。
代碼如下 複製代碼

class Code{

// 1. 定義各個成員 有寬、高、畫布、字數、類型、畫類型

private $width; //寬度
private $height; //高度
private $num; //驗證碼字數
private $imgType; //產生圖片類型
private $Type; //字串類型 1,2,3 三個選項 1 純數字 2 純小寫字母 3 大小寫數字混合
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. 定義隨機擷取字串函數
private function codestr(){
switch($this->Type){

case 1: // 類型為1 擷取1-9隨機數
$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 擷取數字,小寫字母,大寫字母 混合
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;
}
}
?>


http://www.bkjia.com/PHPjc/444609.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/444609.htmlTechArticle本文章提供這款php驗證碼產生類靈活好用,使用者可以定義各個成員 有寬、高、畫布、字數、類型、畫類型同時我們只要修改 $Type就可以定義...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.