搜索
查看: 2262|回复: 0

非常实用的php验证码类

[复制链接]

4770

主题

4771

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
14338
发表于 2018-2-11 12:11:15 | 显示全部楼层 |阅读模式

            本文实例为大家分享了php验证码类,供大家参考,具体内容如下
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($);
    //设置干扰元素
    $this->setDistructcolor();
    //向图像中随机画出文本
    $this->outputtext($fontpath);
    //输出图像
    $this->outputimage();
  }
  /**
   *
   *获取随机创建的验证码
   */
  public function getCheckCode(){
     
  }
  private function Img_resouce(){
    //创建一个真彩图像
    $this->($this->width,$this->height);
    //随机设置图像背景
    $backcolor=imagecolorallocate($this->,rand(225,255),rand(225,255),rand(225,255));
    //填充颜色
    imagefill($this->, 0, 0, $backcolor);
    //设置边框背景
    $border=imagecolorallocate($this->, 0,0,0);
    //画一个矩形
    imagerectangle($this->,0,0,$this->width-1,$this->height-1,$border);
  }
  private function setDistructcolor(){
    //绘画干扰点
    for ($i = 0; $i disturbColorNum; $i++) {
      
      imagesetpixel($this->, rand(1, $this->width-2), rand(1, $this->height-2), rand(0,255));
    }
     
    //绘画干扰线
    for ($j = 0; $j ,rand(0,255),rand(0,255),rand(0,255));
      imagearc($this->, 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 codeNum; $i++) {
      
      $char=$code{rand(0, strlen($code)-1)};
      $string.=$char;
    }
    return $string;
  }
  private function outputtext($fontpath=''){
    for ($i = 0; $i codeNum; $i++) {
      $fontcolor=imagecolorallocate($this->, 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->, $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->,$fontsize,rand(-45,45),$x,$y,$fontcolor,fontpath,$this->checkCode{$i});
       }
    }
  }
  private function outputimage() {
     
    if (imagetypes() & ) {
      header("Content-type: image/gif");
      imagegif($this->);
    }else if(imagetypes() & ) {
      header("Content-type: image/jpeg");
      imagejpeg($this->);
    }else if(imagetypes() & ) {
      header("Content-type: image/png");
      imagepng($this->);
    }else {
      echo "HP不支持的类型";
    }
     
     
  }
  private function __destruct(){
     
    imagedestroy($this->);
  }
}
?>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

长春门户网站

长春门户网是网民了解长春的网络窗口,同是提供长春地区百姓生活分类供求信息的门户网站,同时提供长春网站建设、长春网站设计,我们将逐步的完善网站分类信息资源;

长春门户网二维码

联系我们

  • 工作时间:早上8:00 - 晚上5:30
  • 投稿联系:13624467185(微信同号)
  • 反馈邮箱:5053050@QQ.com
  • 公司地址:吉林省长春市亚泰大街与自由大路交汇五环国际大厦1408室

QQ|小黑屋|手机版|Archiver|cc! ( 吉ICP备2021009740号-8 )

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表