首页 > 语言 > PHP > 正文

非常实用的php验证码类

2024-05-04 23:46:00
字体:
来源:转载
供稿:网友
这篇文章主要为大家分享了非常实用的php验证码类,感兴趣的小伙伴们可以参考一下
 

本文实例为大家分享了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);   } } ?>

以上就是本文的全部内容,希望对大家的学习有所帮助。



注:相关教程知识阅读请移步到PHP教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选