首页 > 开发 > Php > 正文

PHP编写的图片验证码类文件分享

2020-02-21 21:03:29
字体:
来源:转载
供稿:网友

适用于自定义的验证码类!

<?php /*  * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */Class Image{     private $img;  public $width = 85;  public $height = 25;  public $code;  public $code_len = 4;  public $code_str = "329832983DSDSKDSLKQWEWQ2lkfDSFSDjfdsfdsjwlkfj93290KFDSKJFDSOIDSLK";  public $bg_color = '#DCDCDC';  public $font_size = 16;  public $font = 'font.ttf';  public $font_color = '#000000';     //创建验证码饿字符创  public function create_code(){    $code = '';    for( $i=0;$i<$this->code_len;$i++ ){      $code .= $this->code_str[mt_rand(0, strlen($this->code_str)-1)];  }    return $this->code = $code;  }     //输出图像  public function getImage(){    $w = $this->width;    $h = $this->height;    $bg_color = $this->bg_color;    $img = imagecreatetruecolor($w, $h);    $bg_color = imagecolorallocate($img,   hexdec(substr($bg_color, 1,2)), hexdec(substr($bg_color, 3,2)), hexdec(substr($bg_color, 5,2)));  imagefill($img, 0, 0, $bg_color);    $this->img = $img;    $this->create_font();    $this->create_pix();  $this->show_code();  }    //写入验证码  public function create_font(){    $this->create_code();    $color = $this->font_color;    $font_color = imagecolorallocate($this->img, hexdec(substr($color,1,2)), hexdec(substr($color, 3,2)), hexdec(substr($color,5,2)));    $x = $this->width/$this->code_len;    for( $i=0;$i<$this->code_len;$i++ ){      $txt_color = imagecolorallocate($this->img, mt_rand(0,100), mt_rand(0, 150), mt_rand(0, 200));      imagettftext($this->img, $this->font_size, mt_rand(-30, 30), $x*$i+mt_rand(3, 6), mt_rand($this->height/1.2, $this->height), $txt_color, $this->font , $this->code[$i]);       //imagestring($this->img, $this->font_size, $x*$i+mt_rand(3, 6),mt_rand(0, $this->height/4) , $this->code[$i], $font_color);    }    $this->font_color = $font_color;  }     //画干扰线  public function create_pix(){    $pix_color= $this->font_color;    for($i=0;$i<100;$i++){      imagesetpixel($this->img, mt_rand(0, $this->width),mt_rand(0, $this->height), $pix_color);    }    for($j=0;$j<4;$j++){      imagesetthickness($this->img, mt_rand(1, 2));      imageline($this->img, mt_rand(0, $this->width), mt_rand(0, $this->height), mt_rand(0, $this->width), mt_rand(0, $this->height), $pix_color);    }  }     //得到验证码  public function getCode(){    return strtoupper($this->code);  }    //输出验证码  private function show_code(){    header("Content-type:image/png");    imagepng($this->img);    imagedestroy($this->img);  }}

我们再来看一例代码:

生成图片类型验证码,验证码包含数字和大写字母,session中存放md5加密后的验证码

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表