本文實例為大家分享了php驗證碼類,供大家參考,具體內容如下
<?php /** * * @author Administrator * */ class ValidateCode{ private $width; private $height; private $codeNum; private $img_resouce; private $disturbColorNum; private $checkCode; function __construct($width=80,$height=20,$codeNum=4) { $this->width=$width; $this->height=$height; $this->codeNum=$codeNum; $this->checkCode=$this->CreateCheckCode(); $number=floor($width*$height/25); if ($number>240-$codeNum) { $this->disturbColorNum=240-$codeNum; }else{ $this->disturbColorNum=$number; } } public function showImage($fontpath='') { //創建圖像背景 $this->Img_resouce(); //var_dump($img_resouce); //設置干擾元素 $this->setDistructcolor(); //向圖像中隨機畫出文本 $this->outputtext($fontpath); //輸出圖像 $this->outputimage(); } /** * *獲取隨機創建的驗證碼 */ public function getCheckCode(){ } private function Img_resouce(){ //創建一個真彩圖像 $this->img_resouce=imagecreatetruecolor($this->width,$this->height); //隨機設置圖像背景 $backcolor=imagecolorallocate($this->img_resouce,rand(225,255),rand(225,255),rand(225,255)); //填充顏色 imagefill($this->img_resouce, 0, 0, $backcolor); //設置邊框背景 $border=imagecolorallocate($this->img_resouce, 0,0,0); //畫一個矩形 imagerectangle($this->img_resouce,0,0,$this->width-1,$this->height-1,$border); } private function setDistructcolor(){ //繪畫干擾點 for ($i = 0; $i <$this->disturbColorNum; $i++) { imagesetpixel($this->img_resouce, rand(1, $this->width-2), rand(1, $this->height-2), rand(0,255)); } //繪畫干擾線 for ($j = 0; $j <3; $j++) { $linecolor=imagecolorallocate($this->img_resouce,rand(0,255),rand(0,255),rand(0,255)); imagearc($this->img_resouce, rand(0,$this->width), rand(0,$this->height), rand(10, 225), rand(20, 150), 55, 44, $linecolor); } } private function CreateCheckCode(){ $code='23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ'; $string=''; for ($i = 0; $i < $this->codeNum; $i++) { $char=$code{rand(0, strlen($code)-1)}; $string.=$char; } return $string; } private function outputtext($fontpath=''){ for ($i = 0; $i < $this->codeNum; $i++) { $fontcolor=imagecolorallocate($this->img_resouce, rand(0,128), rand(0, 128), rand(0, 128)); if ($fontpath=='') { $fontsize=rand(3, 5); $x=floor($this->width/$this->codeNum)*$i+3; $y=rand(0, $this->height-20); imagechar($this->img_resouce, $fontsize, $x, $y, $this->checkCode{$i}, $fontcolor); }else{ $fontsize=rand(12, 16); $x=floor(($this->width-8)/$this->codeNum)*$i+8; $y=rand($fontsize, $this->height-15); imagettftext($this->img_resouce,$fontsize,rand(-45,45),$x,$y,$fontcolor,fontpath,$this->checkCode{$i}); } } } private function outputimage() { if (imagetypes() & IMG_GIF) { header("Content-type: image/gif"); imagegif($this->img_resouce); }else if(imagetypes() & IMG_JPEG) { header("Content-type: image/jpeg"); imagejpeg($this->img_resouce); }else if(imagetypes() & IMG_PNG) { header("Content-type: image/png"); imagepng($this->img_resouce); }else { echo "PHP不支持的類型"; } } private function __destruct(){ imagedestroy($this->img_resouce); } } ?>
以上就是本文的全部內容,希望對大家的學習有所幫助。