当前位置 : 主页 > 网络编程 > PHP >

对象来编写的验证码类

来源:互联网 收集:自由互联 发布时间:2021-06-28
?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 $
 
<?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);
    }
}

上一篇:生成验证码
下一篇:PHP简单分页
网友评论