非常实用的php验证码类
本文实例为大家分享了php验证码类,供大家参考,具体内容如下
<?php /** * *@authorAdministrator * */ classValidateCode{ 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; } } publicfunctionshowImage($fontpath=''){ //创建图像背景 $this->Img_resouce(); //var_dump($img_resouce); //设置干扰元素 $this->setDistructcolor(); //向图像中随机画出文本 $this->outputtext($fontpath); //输出图像 $this->outputimage(); } /** * *获取随机创建的验证码 */ publicfunctiongetCheckCode(){ } privatefunctionImg_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); } privatefunctionsetDistructcolor(){ //绘画干扰点 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); } } privatefunctionCreateCheckCode(){ $code='23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ'; $string=''; for($i=0;$i<$this->codeNum;$i++){ $char=$code{rand(0,strlen($code)-1)}; $string.=$char; } return$string; } privatefunctionoutputtext($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}); } } } privatefunctionoutputimage(){ if(imagetypes()&IMG_GIF){ header("Content-type:image/gif"); imagegif($this->img_resouce); }elseif(imagetypes()&IMG_JPEG){ header("Content-type:image/jpeg"); imagejpeg($this->img_resouce); }elseif(imagetypes()&IMG_PNG){ header("Content-type:image/png"); imagepng($this->img_resouce); }else{ echo"PHP不支持的类型"; } } privatefunction__destruct(){ imagedestroy($this->img_resouce); } } ?>
以上就是本文的全部内容,希望对大家的学习有所帮助。