又一个php验证码类,简单实用型,配有实际调用示例,初学php 验证码的朋友,可以参考学习下。
复制代码 代码如下:
<?php
/**
* 通用验证码类 img.php
* 版本:V0.1
* www.jb200.com 2013/3/1
*/
class ValidateCode {
private $charset="abcdefghizklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; //随机因子
private $code; //验证码文字
private $codelen=4; //验证码显示几个文字
private $width=130; //验证码宽度
private $height=50; //验证码高度
private $img; //验证码资源句柄
private $font; //指定的字体
private $fontsize=20; //指定的字体大小
private $fontcolor; //字体颜色 随机
//构造类 编写字体
public function __construct(){
$this->font=ROOT_PATH.'/font/elephant.ttf';
}
//创建4个随机码
private function createCode(){
$_leng=strlen($this->charset);
for($i=1;$i<=$this->codelen;$i++){
$this->code.=$this->charset[mt_rand(0,$_leng)];
}
return $this->code;
}
//创建背景
private function createBg(){
//创建画布 给一个资源jubing
$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++){
//文字颜色
$color=imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
//资源句柄 字体大小 倾斜度 字体长度 字体高度 字体颜色 字体 具体文本
imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this->height/1.4,$color,$this->font,$this->code[$i]);
}
}
//随机线条
private function createLine(){
//随机线条
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->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color);
}
//随机雪花
for ($i=0;$i<45;$i++){
$color = imagecolorallocate($this->img,mt_rand(220,255),mt_rand(220,255),mt_rand(220,255));
imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);
}
}
//输出背景
private function outPut(){
//生成标头
header('ContentType:img/png');
//输出图片
imagepng($this->img);
//销毁结果集
imagedestroy($this->img);
}
//对外输出
public function doimg(){
//加载背景
$this->createBg();
//加载文件
$this->createCode();
//加载线条
$this->createLine();
//加载字体
$this->createFont();
//加载背景
$this->outPut();
}
//获取验证码
public function getCode(){
return strtolower($this->code);
}
}
?>
调用示例:index.php
为大家推荐几篇有关php验证码的文章:
php随机验证码 php生成随机验证码(图文)
用php生成带有雪花背景的验证码
php写的一个验证码
php生成动态图片验证码的一段代码