验证码类,生成验证码
来源:互联网 发布:win10摄像头录像软件 编辑:程序博客网 时间:2024/05/14 20:11
class Captcha{
private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789'; //随机因子,
private $code; //验证码字符串
private $codelen = 4; //验证码长度
private $width = 150; //宽度
private $height = 40; //高度
private $img; //图形资源句柄
private $font; //指定的字体
private $fontsize = 20; //指定字体大小
private $fontcolor; //指定字体颜色
//构造方法初始化
public function __construct($codelen=4,$width=150,$height=40,$fontsize = 20,$font="elephant.ttf") {
$this->codelen = $codelen;
$this->width = $width;
$this->height = $height;
$this->fontsize = $fontsize;
$this->font = $font;
}
//生成随机码
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),$_x*$i+mt_rand(1,5),$this->height / 1.4,$this->fontcolor,$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<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 generateCode() {
$this->createBg();
$this->createCode();
$this->createLine();
$this->createFont();
$this->outPut();
}
//获取验证码
public function getCode() {
return strtolower($this->code);
}
}
//调用实例
//$c = new Captcha();
//$c->generateCode();
//$_SESSION['captcha'] = $c->getCode();
private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789'; //随机因子,
private $code; //验证码字符串
private $codelen = 4; //验证码长度
private $width = 150; //宽度
private $height = 40; //高度
private $img; //图形资源句柄
private $font; //指定的字体
private $fontsize = 20; //指定字体大小
private $fontcolor; //指定字体颜色
//构造方法初始化
public function __construct($codelen=4,$width=150,$height=40,$fontsize = 20,$font="elephant.ttf") {
$this->codelen = $codelen;
$this->width = $width;
$this->height = $height;
$this->fontsize = $fontsize;
$this->font = $font;
}
//生成随机码
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),$_x*$i+mt_rand(1,5),$this->height / 1.4,$this->fontcolor,$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<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 generateCode() {
$this->createBg();
$this->createCode();
$this->createLine();
$this->createFont();
$this->outPut();
}
//获取验证码
public function getCode() {
return strtolower($this->code);
}
}
//调用实例
//$c = new Captcha();
//$c->generateCode();
//$_SESSION['captcha'] = $c->getCode();
0 0
- 验证码生成类
- 验证码生成类
- 验证码生成类
- 验证码类,生成验证码
- 验证码生成及验证
- 生成验证码并验证
- 验证码生成与验证
- 验证码的生成类
- 生成图片验证码类
- 生成图片验证码类
- 验证码生成工具类
- 验证码生成工具类
- Java验证码生成类
- 验证码图片生成类
- 验证码生成工具类
- 生成图片验证码类
- C# 验证码生成类
- php验证码生成类
- 文件描述符以及file结构体
- 14. hbase 更改表名
- Swift 用import AFNetworking但是显示no such module
- ZCMU—1539
- robomaster自动化打大神符(2017年版本)本文包括图像处理和树莓派与机器交互部分
- 验证码类,生成验证码
- Spring提高篇(一):Spring 所提供的过滤器和监听器
- AVL 红黑树 B(+)树 跳表 字典树 应用场景及分析
- FFMPEG学习【libavcodec】:编解码器:硬件加速器桥:VDA
- HDU 2107
- centos6.5环境下sysbench编译安装
- cocos js控件ccui.Text 和ccui.RichText获得实际大小的方法
- Eclipse修改项目默认发布空间步骤
- Mac使用终端安装Homebrew(brew)