This verification code class can be used directly, or you can refer to it!
The class member codestr is the generated verification code string:
<?php /** * 验证码 */ class Code{ // 1. 定义各个成员 有宽、高、画布、字数、类型、画类型 private $width; //宽度 private $height; //高度 private $num; //验证码字数 private $imgType; //生成图片类型 private $Type; //字串类型 1,2,3 三个选项 1 纯数字 2 纯小写字母 3 大小写数字混合 private $hb; //画布 public $codestr; // 验证码字串 public function __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. 定义随机获取字符串函数 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;$i<$this->num;$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;$i<$sum;$i++){ imagesetpixel($this->hb,rand(0,$this->width),rand(0,$this->height),$this->Bg()); } } // 8. 随机直线 弧线 private function huxian(){ 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. 写字 private function xiezi(){ 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. 输出 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; } } ?>
Share an experience of verification code: When the verification code generated by PHP cannot be displayed normally, first you have to open the PHP script that generates the verification code directly in the browser and take a look. If something similar to "Picture Error" is displayed message, indicating that your php program is not running normally. Then, you can remove the sentence "header("content-type:image/png");" and refresh the page. You can follow the error message step by step. Find the problem and solve it. In the end, if there is no problem, add the sentence "header..." and look at it again.
"header("content-type:image/png"); "This The meaning of the sentence is: Tell the browser that "I" is a picture. With this sentence, the browser will not display the php error normally
Here is the PHP verification code class.
www.phpha.com/archives/31.html