PHP验证码类代码( 最新修改,完全定制化! )


Authnum.class.php 下载

复制代码 代码如下:

<?php
session_start();
class Authnum {
//图片对象、宽度、高度、验证码长度
private $im;
private $im_width;
private $im_height;
private $len;
//随机字符串、y轴坐标值、随机颜色
private $randnum;
private $y;
private $randcolor;
//背景色的红绿蓝,默认是浅灰色
public $red=238;
public $green=238;
public $blue=238;
/**
* 可选设置:验证码类型、干扰点、干扰线、Y轴随机
* 设为 false 表示不启用
**/
//默认是大小写数字混合型,1 2 3 分别表示 小写、大写、数字型
public $ext_num_type='';
public $ext_pixel = false; //干扰点
public $ext_line = false; //干扰线
public $ext_rand_y= true; //Y轴随机
function __construct ($len=4,$im_width='',$im_height=25) {
// 验证码长度、图片宽度、高度是实例化类时必需的数据
$this->len = $len; $im_width = $len * 15;
$this->im_width = $im_width;
$this->im_height= $im_height;
$this->im = imagecreate($im_width,$im_height);
}
// 设置图片背景颜色,默认是浅灰色背景
function set_bgcolor () {
imagecolorallocate($this->im,$this->red,$this->green,$this->blue);
}
// 获得任意位数的随机码
function get_randnum () {
$an1 = 'abcdefghijklmnopqrstuvwxyz';
$an2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$an3 = '0123456789';
if ($this->ext_num_type == '') $str = $an1.$an2.$an3;
if ($this->ext_num_type == 1) $str = $an1;
if ($this->ext_num_type == 2) $str = $an2;
if ($this->ext_num_type == 3) $str = $an3;
for ($i = 0; $i < $this->len; $i++) {
$start = rand(1,strlen($str) - 1);
$randnum .= substr($str,$start,1);
}
$this->randnum = $randnum;
$_SESSION[an] = $this->randnum;
}
// 获得验证码图片Y轴
function get_y () {
if ($this->ext_rand_y) $this->y = rand(5, $this->im_height/5);
else $this->y = $this->im_height / 4 ;
}
// 获得随机色
function get_randcolor () {
$this->randcolor = imagecolorallocate($this->im,rand(0,100),rand(0,150),rand(0,200));
}
// 添加干扰点
function set_ext_pixel () {
if ($this->ext_pixel) {
for($i = 0; $i < 100; $i++){
$this->get_randcolor();
imagesetpixel($this->im, rand()%100, rand()%100, $this->randcolor);
}
}
}
// 添加干扰线
function set_ext_line () {
if ($this->ext_line) {
for($j = 0; $j < 2; $j++){
$rand_x = rand(2, $this->im_width);
$rand_y = rand(2, $this->im_height);
$rand_x2 = rand(2, $this->im_width);
$rand_y2 = rand(2, $this->im_height);
$this->get_randcolor();
imageline($this->im, $rand_x, $rand_y, $rand_x2, $rand_y2, $this->randcolor);
}
}
}
/**创建验证码图像:
* 建立画布(__construct函数)
* 设置画布背景($this->set_bgcolor();)
* 获取随机字符串($this->get_randnum ();)
* 文字写到图片上(imagestring函数)
* 添加干扰点/线($this->set_ext_line(); $this->set_ext_pixel();)
* 输出图片
**/
function create () {
$this->set_bgcolor();
$this->get_randnum ();
for($i = 0; $i < $this->len; $i++){
$font = rand(4,6);
$x = $i/$this->len * $this->im_width + rand(1, $this->len);
$this->get_y();
$this->get_randcolor();
imagestring($this->im, $font, $x, $this->y, substr($this->randnum, $i ,1), $this->randcolor);
}
$this->set_ext_line();
$this->set_ext_pixel();
header("content-type:image/png");
imagepng($this->im);
imagedestroy($this->im); //释放图像资源
}
}//end class
/**使用验证码类的方法:
* $an = new Authnum(验证码长度,图片宽度,图片高度);
* 实例化时不带参数则默认是四位的60*25尺寸的常规验证码图片
* 表单页面检测验证码的方法,对比 $_SESSION[an] 是否等于 $_POST[验证码文本框ID]
* 可选配置:
* 1.验证码类型:$an->ext_num_type=1; 值为1是小写类型,2是大写类型,3是数字类型
* 2.干扰点:$an->ext_pixel = false; 值为false表示不添加干扰点
* 3.干扰线:$an->ext_line = false; 值为false表示不添加干扰线
* 4.Y轴随机:$an->ext_rand_y = false; 值为false表示不支持图片Y轴随机
* 5.图片背景:改变 $red $green $blue 三个成员变量的值即可
**/
$an = new Authnum();
$an->ext_num_type='';
$an->ext_pixel = true; //干扰点
$an->ext_line = false; //干扰线
$an->ext_rand_y= true; //Y轴随机
$an->green = 238;
$an->create();
?>



相关阅读:
Oracle数据库重做日志文件丢失后的恢复
一个完整的Access数据库处理系统
调整FreeBSD的虚拟内存系统
SpeedPHP强大并智能的对象初始化工具
CSS3 网页下拉菜单代码解释 中文翻译
js实现图片显示局部,鼠标经过显示全部的效果
人们期待的CSS3的10大功能
批处理实现文本内容居中显示的代码
CSS网页布局全精通
关于JavaScript的gzip静态压缩方法
学习js所必须要知道的一些
oracle函数使用:decode和nvl函数
SQL语句判断已知表是否存在
oracle DB LINK的简单应用
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 我的自由梦,我的呐喊声 汽车销售顾问辞职报告 教育实习总结范文 爱你现在的时光 读《wow我的亿万甜心!》有感450字 《离殇》 梦中爱 香港基础教育考察报告 初中初一作文700字:成长的足迹 纽伯瑞儿童文学金奖小说:《风之王》 英文结婚祝福 每一日都很好作文250字 心与心的交流作文1100字 新材料作文优秀作文 全省旅游项目管理工作会议纪要 公务员任职培训学习打算 复退军人稳控工作半年总结 ROY的第四天 我爱冬天作文900字 触动心灵的经典人生感悟 《穷人〉续写 五官作文 关于失恋的句子 今天是愚人节吗 酬思黯代书见戏(一作酬牛相见寄) 致远在天堂的父亲 美丽的放弃作文200字 与胡万非的友谊 春节成语(2) 供电所2012年安全生产工作总结及2013年安全工作思路 《又雨天》 春的留白 《影子》续写作文100字 电视台干部科学发展观民主生活会分析材料 光棍节表白句子 2016施工调查报告 幸福的内涵作文400字 会计实习报告范文 会计实习报告总结 家乡的小狗作文 建设工程“质量保证金”监管协议书 雨后池塘 入党申请谈话通用版 爱中的心! 寄山中诸友 经济全球化条件下中国在国际分工格局中的定位 课间风波作文500字 银行优质服务系列活动实施方案一 我的二表姐作文800字 芜花叙 看开学第一课观后感2015

Copyright © 2016 phpStudy |