fpeHTML5中文学习网 - HTML5先行者学习网
看到PHP100视频34讲写的php验证码类,支持自定义图片大小、字符个数、字符类型、字符大小、图片类型、汉字验证码、干扰线等,注释详细fpeHTML5中文学习网 - HTML5先行者学习网
字体文件是微软雅黑,和验证码文件同目录,文件名msyh.ttf,可以从C:/windows/fonts目录找到,复制到同目录即可fpeHTML5中文学习网 - HTML5先行者学习网
<?phpfpeHTML5中文学习网 - HTML5先行者学习网
/**fpeHTML5中文学习网 - HTML5先行者学习网
* @version Id: imgcode.php 2012-11-30 kfpeHTML5中文学习网 - HTML5先行者学习网
* @package imgcode.phpfpeHTML5中文学习网 - HTML5先行者学习网
* @Purview defaultfpeHTML5中文学习网 - HTML5先行者学习网
* @link http://www.3oom.comfpeHTML5中文学习网 - HTML5先行者学习网
*/fpeHTML5中文学习网 - HTML5先行者学习网
$img = new img_code();fpeHTML5中文学习网 - HTML5先行者学习网
$img->show();fpeHTML5中文学习网 - HTML5先行者学习网
fpeHTML5中文学习网 - HTML5先行者学习网
class img_code{fpeHTML5中文学习网 - HTML5先行者学习网
private $img_type = 'png';//输出图片类型 png,gif,jpgfpeHTML5中文学习网 - HTML5先行者学习网
private $line = TRUE;//是否增加干扰线fpeHTML5中文学习网 - HTML5先行者学习网
private $text = '2';//验证码类型:0数字,1字母,2汉字fpeHTML5中文学习网 - HTML5先行者学习网
private $text_size= 20;//字体大小fpeHTML5中文学习网 - HTML5先行者学习网
private $length = 4;//字符串长度fpeHTML5中文学习网 - HTML5先行者学习网
private $width = 120;//图片宽度,像素fpeHTML5中文学习网 - HTML5先行者学习网
private $height = 40;//图片高度,像素fpeHTML5中文学习网 - HTML5先行者学习网
private $font_file= 'msyh.ttf';//字体文件fpeHTML5中文学习网 - HTML5先行者学习网
public $img = '';fpeHTML5中文学习网 - HTML5先行者学习网
fpeHTML5中文学习网 - HTML5先行者学习网
/*fpeHTML5中文学习网 - HTML5先行者学习网
* 创建图片fpeHTML5中文学习网 - HTML5先行者学习网
*/fpeHTML5中文学习网 - HTML5先行者学习网
private function img_create(){fpeHTML5中文学习网 - HTML5先行者学习网
$this->img = imagecreate($this->width, $this->height);fpeHTML5中文学习网 - HTML5先行者学习网
imagecolorallocate($this->img, 255,255,255);fpeHTML5中文学习网 - HTML5先行者学习网
fpeHTML5中文学习网 - HTML5先行者学习网
}fpeHTML5中文学习网 - HTML5先行者学习网
/*fpeHTML5中文学习网 - HTML5先行者学习网
* 显示图片fpeHTML5中文学习网 - HTML5先行者学习网
*/fpeHTML5中文学习网 - HTML5先行者学习网
public function show(){fpeHTML5中文学习网 - HTML5先行者学习网
fpeHTML5中文学习网 - HTML5先行者学习网
@session_start();fpeHTML5中文学习网 - HTML5先行者学习网
$this->img_create();fpeHTML5中文学习网 - HTML5先行者学习网
if($this->line){fpeHTML5中文学习网 - HTML5先行者学习网
$this->img_line();fpeHTML5中文学习网 - HTML5先行者学习网
}fpeHTML5中文学习网 - HTML5先行者学习网
$this->img_text();fpeHTML5中文学习网 - HTML5先行者学习网
$this->img_header();fpeHTML5中文学习网 - HTML5先行者学习网
fpeHTML5中文学习网 - HTML5先行者学习网
imagedestroy($im);fpeHTML5中文学习网 - HTML5先行者学习网
exit();fpeHTML5中文学习网 - HTML5先行者学习网
}fpeHTML5中文学习网 - HTML5先行者学习网
fpeHTML5中文学习网 - HTML5先行者学习网
/*fpeHTML5中文学习网 - HTML5先行者学习网
* 生成字符串fpeHTML5中文学习网 - HTML5先行者学习网
*/fpeHTML5中文学习网 - HTML5先行者学习网
private function img_text(){fpeHTML5中文学习网 - HTML5先行者学习网
$rand_string = '';fpeHTML5中文学习网 - HTML5先行者学习网
$im = &$this->img;fpeHTML5中文学习网 - HTML5先行者学习网
$fontColor[] = imagecolorallocate($im, 0x15, 0x15, 0x15);fpeHTML5中文学习网 - HTML5先行者学习网
$fontColor[] = imagecolorallocate($im, 0x95, 0x1e, 0x04);fpeHTML5中文学习网 - HTML5先行者学习网
$fontColor[] = imagecolorallocate($im, 0x93, 0x14, 0xa9);fpeHTML5中文学习网 - HTML5先行者学习网
$fontColor[] = imagecolorallocate($im, 0x12, 0x81, 0x0a);fpeHTML5中文学习网 - HTML5先行者学习网
$fontColor[] = imagecolorallocate($im, 0x06, 0x3a, 0xd5);fpeHTML5中文学习网 - HTML5先行者学习网
if($this->text<2){fpeHTML5中文学习网 - HTML5先行者学习网
//数字,字母fpeHTML5中文学习网 - HTML5先行者学习网
for($i=0;$i<$this->length;$i++){fpeHTML5中文学习网 - HTML5先行者学习网
if($this->text){fpeHTML5中文学习网 - HTML5先行者学习网
$c=chr(mt_rand(65,90));fpeHTML5中文学习网 - HTML5先行者学习网
}else{fpeHTML5中文学习网 - HTML5先行者学习网
$c=chr(mt_rand(48,57));fpeHTML5中文学习网 - HTML5先行者学习网
}fpeHTML5中文学习网 - HTML5先行者学习网
if( $c=='I' ) $c = 'K';fpeHTML5中文学习网 - HTML5先行者学习网
if( $c=='O' ) $c = 'E';fpeHTML5中文学习网 - HTML5先行者学习网
$rand_string[]=$c;fpeHTML5中文学习网 - HTML5先行者学习网
} fpeHTML5中文学习网 - HTML5先行者学习网
fpeHTML5中文学习网 - HTML5先行者学习网
fpeHTML5中文学习网 - HTML5先行者学习网
}else{fpeHTML5中文学习网 - HTML5先行者学习网
//汉字,此处可以引入汉字文件fpeHTML5中文学习网 - HTML5先行者学习网
$arr=array('大','小','多','少','人','天','水','土','木','火','云');fpeHTML5中文学习网 - HTML5先行者学习网
for($i=0;$i<$this->length;$i++){fpeHTML5中文学习网 - HTML5先行者学习网
$l = count($arr)-1; fpeHTML5中文学习网 - HTML5先行者学习网
//文件编码为gbk需要转换fpeHTML5中文学习网 - HTML5先行者学习网
//$rand_string[] = iconv('gb2312','utf-8',$arr[mt_rand(0,$l)]);fpeHTML5中文学习网 - HTML5先行者学习网
$rand_string[] = $arr[mt_rand(0,$l)];fpeHTML5中文学习网 - HTML5先行者学习网
}fpeHTML5中文学习网 - HTML5先行者学习网
fpeHTML5中文学习网 - HTML5先行者学习网
}fpeHTML5中文学习网 - HTML5先行者学习网
$_SESSION['imgcode']=$rand_string;fpeHTML5中文学习网 - HTML5先行者学习网
$_c = count($rand_string);fpeHTML5中文学习网 - HTML5先行者学习网
for($i=0;$i<$_c;$i++)fpeHTML5中文学习网 - HTML5先行者学习网
{fpeHTML5中文学习网 - HTML5先行者学习网
if($this->text == 1){fpeHTML5中文学习网 - HTML5先行者学习网
$rand_string[$i] = strtoupper($rand_string[$i]);fpeHTML5中文学习网 - HTML5先行者学习网
}fpeHTML5中文学习网 - HTML5先行者学习网
fpeHTML5中文学习网 - HTML5先行者学习网
$c_fontColor = $fontColor[mt_rand(0,4)];fpeHTML5中文学习网 - HTML5先行者学习网
$y = $this->height-($this->height-$this->text_size)/2;fpeHTML5中文学习网 - HTML5先行者学习网
$x = ($this->width-($this->text_size+2)*$this->length)/2;fpeHTML5中文学习网 - HTML5先行者学习网
$y_pos = $i==0 ? $x : $i*($this->text_size+2)+$x;fpeHTML5中文学习网 - HTML5先行者学习网
$c = mt_rand(0, 15);fpeHTML5中文学习网 - HTML5先行者学习网
@imagettftext($im, $this->text_size, $c, $y_pos, $y, $c_fontColor, $this->font_file, $rand_string[$i]);fpeHTML5中文学习网 - HTML5先行者学习网
fpeHTML5中文学习网 - HTML5先行者学习网
}fpeHTML5中文学习网 - HTML5先行者学习网
}fpeHTML5中文学习网 - HTML5先行者学习网
/*fpeHTML5中文学习网 - HTML5先行者学习网
* 生成线条fpeHTML5中文学习网 - HTML5先行者学习网
*/fpeHTML5中文学习网 - HTML5先行者学习网
private function img_line(){fpeHTML5中文学习网 - HTML5先行者学习网
$im = &$this->img;fpeHTML5中文学习网 - HTML5先行者学习网
$img_width = $this->width;fpeHTML5中文学习网 - HTML5先行者学习网
$img_height= $this->height;fpeHTML5中文学习网 - HTML5先行者学习网
//背景横线fpeHTML5中文学习网 - HTML5先行者学习网
$lineColor1 = imagecolorallocate($im, 0xda, 0xd9, 0xd1);fpeHTML5中文学习网 - HTML5先行者学习网
for($j=3; $j<=$img_height-3; $j=$j+3)fpeHTML5中文学习网 - HTML5先行者学习网
{fpeHTML5中文学习网 - HTML5先行者学习网
imageline($im, 2, $j, $img_width - 2, $j, $lineColor1);fpeHTML5中文学习网 - HTML5先行者学习网
}fpeHTML5中文学习网 - HTML5先行者学习网
fpeHTML5中文学习网 - HTML5先行者学习网
//背景竖线fpeHTML5中文学习网 - HTML5先行者学习网
$lineColor2 = imagecolorallocate($im, 0xda,0xd9,0xd1);fpeHTML5中文学习网 - HTML5先行者学习网
for($j=2;$j<$img_width-6;$j=$j+6)fpeHTML5中文学习网 - HTML5先行者学习网
{fpeHTML5中文学习网 - HTML5先行者学习网
imageline($im, $j, 0, $j+8, $img_height, $lineColor2);fpeHTML5中文学习网 - HTML5先行者学习网
}fpeHTML5中文学习网 - HTML5先行者学习网
fpeHTML5中文学习网 - HTML5先行者学习网
//画边框fpeHTML5中文学习网 - HTML5先行者学习网
if( $use_boder && $filter_type == 0 )fpeHTML5中文学习网 - HTML5先行者学习网
{fpeHTML5中文学习网 - HTML5先行者学习网
$bordercolor = imagecolorallocate($im, 0x9d, 0x9e, 0x96);fpeHTML5中文学习网 - HTML5先行者学习网
imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $bordercolor);fpeHTML5中文学习网 - HTML5先行者学习网
}fpeHTML5中文学习网 - HTML5先行者学习网
}fpeHTML5中文学习网 - HTML5先行者学习网
/*fpeHTML5中文学习网 - HTML5先行者学习网
* 生成输出fpeHTML5中文学习网 - HTML5先行者学习网
*/fpeHTML5中文学习网 - HTML5先行者学习网
private function img_header(){fpeHTML5中文学习网 - HTML5先行者学习网
header("Pragma:no-cache/r/n");fpeHTML5中文学习网 - HTML5先行者学习网
header("Cache-Control:no-cache/r/n");fpeHTML5中文学习网 - HTML5先行者学习网
header("Expires:0/r/n");fpeHTML5中文学习网 - HTML5先行者学习网
if($this->img_type == 'jpg'){fpeHTML5中文学习网 - HTML5先行者学习网
header('Content-type: image/jpeg');fpeHTML5中文学习网 - HTML5先行者学习网
imagejpeg($this->img);fpeHTML5中文学习网 - HTML5先行者学习网
}else if($this->img_type == 'png'){fpeHTML5中文学习网 - HTML5先行者学习网
header('Content-type: image/png');fpeHTML5中文学习网 - HTML5先行者学习网
imagepng($this->img);fpeHTML5中文学习网 - HTML5先行者学习网
}else{fpeHTML5中文学习网 - HTML5先行者学习网
header('Content-type: image/gif');fpeHTML5中文学习网 - HTML5先行者学习网
imagegif($this->img);fpeHTML5中文学习网 - HTML5先行者学习网
}fpeHTML5中文学习网 - HTML5先行者学习网
}fpeHTML5中文学习网 - HTML5先行者学习网
}fpeHTML5中文学习网 - HTML5先行者学习网
文章来源:http://www.3oom.com/blog/50.htmlfpeHTML5中文学习网 - HTML5先行者学习网
fpeHTML5中文学习网 - HTML5先行者学习网fpeHTML5中文学习网 - HTML5先行者学习网