个人写的PHP验证码生成类分享
此验证码类直接拿去就可以用,也可以参考!
其中类成员codestr是生成的验证码字符串:
<?php /** *验证码 */ classCode{ //1.定义各个成员有宽、高、画布、字数、类型、画类型 private$width;//宽度 private$height;//高度 private$num;//验证码字数 private$imgType;//生成图片类型 private$Type;//字串类型1,2,3三个选项1纯数字2纯小写字母3大小写数字混合 private$hb;//画布 public$codestr;//验证码字串 publicfunction__construct($height=20,$num=4,$imgType="jpeg",$Type=1){ $this->width=$num*20; $this->height=$height; $this->num=$num; $this->imgType=$imgType; $this->Type=$Type; $this->codestr=$this->codestr(); $this->zuhe(); } //2.定义随机获取字符串函数 privatefunctioncodestr(){ switch($this->Type){ case1://类型为1获取1-9随机数 $str=implode("",array_rand(range(0,9),$this->num)); break; case2://类型为2获取a-z随机小写字母 $str=implode("",array_rand(array_flip(range(a,z)),$this->num)); break; case3://类型为3获取数字,小写字母,大写字母混合 for($i=0;$i<$this->num;$i++){ $m=rand(0,2); switch($m){ case0: $o=rand(48,57); break; case1: $o=rand(65,90); break; case2: $o=rand(97,122); break; } $str.=sprintf("%c",$o); } break; } return$str; } //3.初始化画布图像资源 privatefunctionHb(){ $this->hb=imagecreatetruecolor($this->width,$this->height); } //4.生成背景颜色 privatefunctionBg(){ returnimagecolorallocate($this->hb,rand(130,250),rand(130,250),rand(130,250)); } //5.生成字体颜色 privatefunctionFont(){ returnimagecolorallocate($this->hb,rand(0,100),rand(0,100),rand(0,100)); } //6.填充背景颜色 privatefunctionBgColor(){ imagefilledrectangle($this->hb,0,0,$this->width,$this->height,$this->Bg()); } //7.干扰点 privatefunctionganrao(){ $sum=floor(($this->width)*($this->height)/3); for($i=0;$i<$sum;$i++){ imagesetpixel($this->hb,rand(0,$this->width),rand(0,$this->height),$this->Bg()); } } //8.随机直线弧线 privatefunctionhuxian(){ for($i=0;$i<$this->num;$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.写字 privatefunctionxiezi(){ for($i=0;$i<$this->num;$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.输出 privatefunctionOutImg(){ $shuchu="image".$this->imgType; $header="Content-type:image/".$this->imgType; if(function_exists($shuchu)){ header($header); $shuchu($this->hb); }else{ exit("GD库没有此类图像"); } } //11.拼装 privatefunctionzuhe(){ $this->Hb(); $this->BgColor(); $this->ganrao(); $this->huxian(); $this->xiezi(); $this->OutImg(); } publicfunctiongetCodeStr(){ return$this->codestr; } } ?>