ImgCode类使用指南
介绍
FLEA_Helper_ImgCode类实现了一个简单的图像验证码生成器,并带有检查验证方法。当启用了SESSION时,验证码会保存在SESSION中。
所属文件:
FLEA/Helper/ImgCode.php。
基本属性
$_code:私有属性,保存生成的验证码。
$_expired:私有属性,保存验证码过期时间。
$imagetype:验证码图片的类型(默认为 jpeg)。
$keepCode:指示是否在生成验证码图片时保留已有的验证码,默认为false,不保留。
说明:
保留已有的验证码可以让用户在各个不同的页面都看到一致的验证码。
只有这个验证码使用后,已有的验证码才会失效。
基本方法
FLEA_Helper_ImgCode()
函数原型:
/**
* 构造函数
*/
function FLEA_Helper_ImgCode()
参数说明:无传入传出参数。
构造函数主要做以下三方面的工作:
1、启动SESSION会话。
2、将$_SESSION['IMGCODE']的值指定给$_code属性,如果$_SESSION['IMGCODE']不存在,则$_code属性值为空。
3、将$_SESSION['IMGCODE_EXPIRED']的值指定给$_expired属性,如果$_SESSION['IMGCODE_EXPIRED']不存在,则$_expired属性值为0。
check()
函数原型:
/**
* 检查图像验证码是否有效(不区分大小写)
*
*/
function check($code)
参数说明:
$code:指定验证码字符串。
返回值:有效为true,无效为false。
checkCaseSensitive()
函数原型:
/**
* 检查图像验证码是否有效(区分大小写)
*
*/
function checkCaseSensitive($code)
参数说明:
$code:指定验证码字符串。
返回值:验证码有效返回true,否则返回false。
clear()
函数原型:
/**
* 清除 session 中的 imgcode 相关信息
*/
function clear()
参数说明:无传入传出参数。
image()
函数原型:
/**
* 利用 GD 库产生验证码图像
*
*/
function image($type = 0, $length = 4, $lefttime = 900, $options = null)
参数说明:
$type:验证码包含的字符类型,
0 - 仅数字、
1 - 仅字母、
其它值 - 数字和字母混合
$length:验证码长度
$leftime:验证码有效时间(秒)
$options:附加选项,可以指定字体、宽度和高度等参数
目前,$options 参数支持下列选项:
- paddingLeft:指定左边距,默认为3(像素)。
paddingRight:指定右边距,默认为3(像素)。
paddingTop:指定上边距,默认为2(像素)。
paddingBottom:指定下边距,默认为2(像素)。
- border:指定边框线厚度,默认为1(像素)。
borderColor:指定边框线颜色,默认为黑色(0x000000)。
- font:指定字体,默认为5。
color:指定字体颜色,默认为白色(0xffffff)。
bgcolor:指定背景色,默认为中灰(0x666666)。
**注意:
如果 font 为 0-5,则使用 GD 库内置的字体。
如果要指定字体文件,则 font 选项必须指定为带绝对路径的字体文件,例如: 引用:
$options = array('font' => '/var/www/example/myfont.gdf');
image($type, $length, $lefttime, $options);
_hex2rgb()
函数原型:
/**
* 将十六进制表示的颜色值转换为rgb
*
* 私有方法,由类内部调用
*
*/
function _hex2rgb($color, $defualt = 'ffffff')
参数说明:
$color:指定十六进制表示的颜色值。例如:0x66CC00/#66CC00/66CC00
$defualt:指定一个缺省的十六进制值,默认为ffffff。说明:如果指定的十六进制的颜色值的字符个数(0x、#除外)不等于3或6,则使用$default指定的值进行转换。**注意,$default指定的值开头不能含有0x或#字符。
返回值:rgb颜色值数组。例如:array(255,255,255)。
使用举例
模版页面中,在需要显示验证码的地方使用 引用:
<img src="<?php echo $this->_url('imgcode'); ?>" />
接下来为显示验证码的控制器编写imgcode方法: 引用:
function actionImgcode() {
$imgcode =& FLEA::getSingleton('FLEA_Helper_ImgCode');
$imgcode->image();
}
最后,对于用户提交的表单做如下验证: 引用:
function actionSubmit() {
$imgcode =& FLEA::getSingleton('FLEA_Helper_ImgCode');
// 假定验证码在表单中的字段名是 imgcode
if ($imgcode->check($_POST['imgcode'])) {
// 验证通过
}
}