您好,欢迎访问一九零五行业门户网

还算功能比较全的PHP验证码类

看到php100视频34讲写的php验证码类,支持自定义图片大小、字符个数、字符类型、字符大小、图片类型、汉字验证码、干扰线等,注释详细
字体文件是微软雅黑,和验证码文件同目录,文件名msyh.ttf,可以从c:\windows\fonts目录找到,复制到同目录即可
show();
class img_code{
    private $img_type = 'png';//输出图片类型 png,gif,jpg
    private $line      = true;//是否增加干扰线
    private $text      = '2';//验证码类型:0数字,1字母,2汉字
    private $text_size= 20;//字体大小
    private $length      = 4;//字符串长度
    private $width      = 120;//图片宽度,像素
    private $height      = 40;//图片高度,像素
    private $font_file= 'msyh.ttf';//字体文件
    public  $img      = '';
/*
    * 创建图片
    */
    private function img_create(){
        $this->img = imagecreate($this->width, $this->height);
        imagecolorallocate($this->img, 255,255,255);
}
    /*
    * 显示图片
    */
    public function show(){
@session_start();
        $this->img_create();
        if($this->line){
        $this->img_line();
        }
        $this->img_text();
        $this->img_header();
imagedestroy($im);
        exit();
    }
/*
    * 生成字符串
    */
    private function img_text(){
        $rand_string = '';
        $im = &$this->img;
        $fontcolor[]  = imagecolorallocate($im, 0x15, 0x15, 0x15);
        $fontcolor[]  = imagecolorallocate($im, 0x95, 0x1e, 0x04);
        $fontcolor[]  = imagecolorallocate($im, 0x93, 0x14, 0xa9);
        $fontcolor[]  = imagecolorallocate($im, 0x12, 0x81, 0x0a);
        $fontcolor[]  = imagecolorallocate($im, 0x06, 0x3a, 0xd5);
        if($this->text
            //数字,字母
            for($i=0;$ilength;$i++){
                if($this->text){
                    $c=chr(mt_rand(65,90));
                }else{
                    $c=chr(mt_rand(48,57));
                }
                if( $c=='i' ) $c = 'k';
                if( $c=='o' ) $c = 'e';
                $rand_string[]=$c;
            }
}else{
            //汉字,此处可以引入汉字文件
           $arr=array('大','小','多','少','人','天','水','土','木','火','云');
            for($i=0;$ilength;$i++){
                $l = count($arr)-1;               
                //文件编码为gbk需要转换
                //$rand_string[] = iconv('gb2312','utf-8',$arr[mt_rand(0,$l)]);
                $rand_string[] = $arr[mt_rand(0,$l)];
            }
}
          $_session['imgcode']=$rand_string;
          $_c = count($rand_string);
          for($i=0;$i
        {
            if($this->text == 1){
            $rand_string[$i] = strtoupper($rand_string[$i]);
            }
$c_fontcolor = $fontcolor[mt_rand(0,4)];
            $y = $this->height-($this->height-$this->text_size)/2;
            $x = ($this->width-($this->text_size+2)*$this->length)/2;
            $y_pos = $i==0 ? $x : $i*($this->text_size+2)+$x;
            $c = mt_rand(0, 15);
            @imagettftext($im, $this->text_size, $c, $y_pos, $y, $c_fontcolor, $this->font_file, $rand_string[$i]);
}
    }
    /*
    * 生成线条
    */
    private function img_line(){
        $im = &$this->img;
        $img_width = $this->width;
        $img_height= $this->height;
            //背景横线
        $linecolor1 = imagecolorallocate($im, 0xda, 0xd9, 0xd1);
        for($j=3; $j
        {
            imageline($im, 2, $j, $img_width - 2, $j, $linecolor1);
        }
//背景竖线
        $linecolor2 = imagecolorallocate($im, 0xda,0xd9,0xd1);
        for($j=2;$j
        {
            imageline($im, $j, 0, $j+8, $img_height, $linecolor2);
        }
//画边框
        if( $use_boder && $filter_type == 0 )
        {
            $bordercolor = imagecolorallocate($im, 0x9d, 0x9e, 0x96);
            imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $bordercolor);
        }
    }
    /*
    * 生成输出
    */
    private function img_header(){
        header(pragma:no-cache\r\n);
           header(cache-control:no-cache\r\n);
            header(expires:0\r\n);
        if($this->img_type == 'jpg'){
            header('content-type: image/jpeg');
            imagejpeg($this->img);
        }else if($this->img_type == 'png'){
            header('content-type: image/png');
            imagepng($this->img);
        }else{
            header('content-type: image/gif');
            imagegif($this->img);
        }
    }
}
 文章来源:http://www.3oom.com/blog/50.html
其它类似信息

推荐信息