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();" />
- php验证码类
- php验证码类
- PHP验证码类
- php验证码类
- php 验证码类
- php 验证码类
- PHP 验证码类
- PHP验证码类
- php验证码类
- php验证码类
- php验证码类
- php验证码类
- php验证码类
- php验证码类
- php验证码类
- php验证码类
- PHP验证码类,简单安全的PHP验证码
- PHP验证码类,简单安全的PHP验证码
- opencv基本图像处理——两种方式读图像
- 单例设计模式
- 内核编译
- .net文件系统--------序列化
- 重写Android Toast框
- PHP验证码类
- NUnit2.0详细使用方法
- 333333333333333333333333333333333333333333333333333333333333333
- mysql触发器总结
- 【算法导论】选择排序法
- UVA409- Excuses, Excuses!
- HDU 2036 多边形的面积
- 用django创建一个简单的sns
- 在使用apt-get安装报错:To continue type in the phrase 'Yes, do as I say!' ?] 解决方法