PHP验证码类

来源:互联网 发布:美工培训课程 编辑:程序博客网 时间:2024/05/18 15:04

php验证码类

如果不适用指定的字体,那么就用imagestring()函数,如果需要遇到指定的字体,就要用到imagettftext()函数。字体的位置在C盘下Windows/Fonts.

VerificationCode.class.php

<?phpclass VerificationCode{private $charset="abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789";//随机因子private $code;//验证码private $codelen=4;//验证码长度private $width=110;//宽度private $height=30;//高度private $img;//图像资源句柄private $font;//制定字体private $fontSize=25;//字体大小private $fontColor;//字体颜色public function __construct(){$this->font="CALIBRIZ.TTF";}//生成验证码private function createCode(){$len=strlen($this->charset)-1;for ($i = 0; $i < $this->codelen; $i++) {$this->code .= $this->charset[mt_rand(0,$len)];}}//生成背景private function createBg(){$this->img=imagecreatetruecolor($this->width,$this->height);$color = imagecolorallocate($this->img,mt_rand(157,255),mt_rand(157,255),mt_rand(157,255));imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);}//生成文字private function createFont(){$x=$this->width/$this->codelen;for ($i = 0; $i < $this->codelen; $i++) {$this->fontColor=imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));imagettftext($this->img,$this->fontSize,mt_rand(-30,30),$i*$x+mt_rand(1,5),$this->height/1.4,$this->fontColor,$this->font,$this->code[$i]);//imagestring($this->img,5,$i*$x+mt_rand(1,5),5,$this->code[$i],$this->fontColor);}}//生成线条、雪花private function createDisturb(){for ($i = 0; $i < 6; $i++) {$color=imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->width),mt_rand(0,$this->width),mt_rand(0,$this->width),$color);}for ($i = 0; $i < 100; $i++) {$color=imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);}}//输出private function outPut(){header("Content-Type:image/png");imagepng($this->img);imagedestroy($this->img);}public function showCode(){$this->createBg();$this->createCode();$this->createDisturb();$this->createFont();$this->outPut();}//获取验证码public function getCode(){return strtolower($this->code);}}?>

code.php

<?phpsession_start();require_once 'VerificationCode.class.php';$code=new VerificationCode();$_SESSION['code']=$code->getCode();$code->showCode();?>

验证码:<input type="text" name="code" /><img src="code.php" onclick="javascript:this.src='code.php?time='+Math.random();" />


原创粉丝点击