PHP验证码类
<?php class verify{ //随机因子 private $text = 'abcdefghWddsdffgdWRFJKFJDFjjdfglkdfg883498Jhdsd9345345j340fg343o4j39d9t345j9dtej'; //验证码句柄资源 private $code; //验证码长度 private $length = 4; //验证码字体大小 private $size = 20; //生成图像的高度 private $height = 30; //验证码字体 private $font; //图像资源句柄 private $image; /** * 构造方法初始化 */ public function __construct(){ $this->font = './static/fonts/msyh.ttf'; } /** * 生成随机码 */ private function createcode(){ $textlength = strlen($this->text)-1; for($i=0; $i<$this->length; $i++){ $this->code .= $this->text[rand(0,$textlength)]; } } /** * 创建图像 */ private function createimg(){ //创建画布 $this->image = imagecreatetruecolor($this->size*$this->length, $this->height); //随机背景色 $color = imagecolorallocate($this->image, rand(0,255), rand(100,255), 175); //创建矩形 imagefilledrectangle($this->image, 0, $this->height, $this->size*$this->length, 0, $color); } /** * 生成文字 */ private function createtext(){ for($i=0;$i<$this->length;$i++){ $color = imagecolorallocate($this->image, 255, 255, 255); imagettftext($this->image, $this->size, 0, 2, 25, $color, $this->font, $this->code); } //设置字符间距 //imagepsbbox($this->text, $this->font, $this->size); } /** * 生成干扰线 以及 $string字符 */ private function createline(){ $string = '--'; for($i=0; $i<1; $i++){ $color = imagecolorallocate($this->image, rand(200,255), rand(200,255), rand(200,255)); imageline($this->image, rand(1,$this->size*$this->length), rand(1,$this->height), rand(1,$this->size*$this->length), rand(1,$this->height), $color); } for($i=0; $i<10; $i++){ $color = imagecolorallocate($this->image, rand(0,10), rand(50,150), rand(200,255)); imagestring($this->image, 1, rand(0,$this->size*$this->length), rand(0,$this->height), $string, $color); } } /** * 输出图像 */ private function outimage(){ header('content-type:image/png'); imagepng($this->image); imagedestroy($this->image); } /** * 对外生成验证 */ public function doimage(){ $this->createimg(); $this->createcode(); $this->createtext(); $this->createline(); $this->outimage(); } //获取验证码 public function getverify() { return strtolower($this->code); } } ?>