加入收藏 | 设为首页 | 会员中心 | 我要投稿 周口站长网 (https://www.0394zz.cn/)- 数据采集、智能营销、经验、云计算、专属主机!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

非常实用的php验证码类

发布时间:2022-07-15 12:25:42 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要为大家分享了非常实用的php验证码类,感兴趣的小伙伴们可以参考一下,本文实例为大家分享了php验证码类,供大家参考,具体内容如下: ?php /** * * @author Administrator * */ class ValidateCode{ private $width; private $height; private $
  这篇文章主要为大家分享了非常实用的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);  
    }  
  }  
  ?>
  以上就是本文的全部内容,希望对大家的学习有所帮助。

(编辑:周口站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读