代码如下 复制代码
width = $num*20;
$this->height = $height;
$this->num = $num;
$this->imgtype = $imgtype;
$this->type = $type;
$this->codestr = $this->codestr();
$this->zuhe();
}
// 2. 定义随机获取字符串函数
private function codestr(){
switch($this->type){
case 1: // 类型为1 获取1-9随机数
$str = implode(,array_rand(range(0,9),$this->num));
break;
case 2: // 类型为2 获取a-z随机小写字母
$str = implode(,array_rand(array_flip(range(a,z)),$this->num));
break;
case 3: // 类型为3 获取数字,小写字母,大写字母 混合
for($i=0;$inum;$i++){
$m = rand(0,2);
switch($m){
case 0:
$o = rand(48,57);
break;
case 1:
$o = rand(65,90);
break;
case 2:
$o = rand(97,122);
break;
}
$str .= sprintf(%c,$o);
}
break;
}
return $str;
}
// 3. 初始化画布图像资源
private function hb(){
$this->hb = imagecreatetruecolor($this->width,$this->height);
}
// 4. 生成背景颜色
private function bg(){
return imagecolorallocate($this->hb,rand(130,250),rand(130,250),rand(130,250));
}
// 5. 生成字体颜色
private function font(){
return imagecolorallocate($this->hb,rand(0,100),rand(0,100),rand(0,100));
}
// 6. 填充背景颜色
private function bgcolor(){
imagefilledrectangle($this->hb,0,0,$this->width,$this->height,$this->bg());
}
// 7. 干扰点
private function ganrao(){
$sum=floor(($this->width)*($this->height)/3);
for($i=0;$iimagesetpixel($this->hb,rand(0,$this->width),rand(0,$this->height),$this->bg());
}
}
// 8. 随机直线 弧线
private function huxian(){
for($i=0;$inum;$i++){
imagearc($this->hb,rand(0,$this->width),rand(0,$this->height),rand(0,$this->width),rand(0,$this->height),rand(0,360),rand(0,360),$this->bg());
}
}
// 9. 写字
private function xiezi(){
for($i=0;$inum;$i++){
$x=ceil($this->width/$this->num)*$i;
$y=rand(1,$this->height-15);
imagechar($this->hb,5,$x+4,$y,$this->codestr[$i],$this->font());
}
}
// 10. 输出
private function outimg(){
$shuchu=image.$this->imgtype;
$header=content-type:image/.$this->imgtype;
if(function_exists($shuchu)){
header($header);
$shuchu($this->hb);
}else{
exit(gd库没有此类图像);
}
}
// 11. 拼装
private function zuhe(){
$this->hb();
$this->bgcolor();
$this->ganrao();
$this->huxian();
$this->xiezi();
$this->outimg();
}
public function getcodestr(){
return $this->codestr;
}
}
?>
http://www.bkjia.com/phpjc/444609.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/444609.htmltecharticle本文章提供这款php验证码生成类灵活好用,用户可以定义各个成员 有宽、高、画布、字数、类型、画类型同时我们只要修改 $type就可以定义...