LotusPhp进修五:Captcha 组件的应用
添加时间:2013-5-6 点击量:
今朝这个进修文档的次序有点乱,我也是看哪个简单就先写哪个,正确的应当是介绍文档,然后介绍文档的目次布局,然后,各个组件有个简介,再跟下来来个 HelloWorld ,然后零丁介绍组件,然掉队阶应用等等,这么个次序才是正确的,不过比来斗劲忙,最后写完会从头收拾出一个次序来的。
Captcha 就是 LotusPhp 验证码的组件,一般来说,斗劲规范的 LotusPhp 组件都邑由3个项目组构成,就是分别是设备文件,框架源码和应用源码,框架源码的话本身下就行了,我这里不占处所贴代码了,这里就是写出设备文件和应用典范,能快速看懂会用为原则。
Captcha 组件可以快速生成验证码,这个验证码不借助于 Session 验证,而是在指定文件夹里生成一个经过加密的验证文件,读取的验证码的时辰会主动拉取验证文件,读取成功就删除了验证文件,读取不成功返回 false。
Captcha 组件有3个办法
init() 是初始化验证码组件的办法。
getImageResource(¥seed) 是生成验证码的办法,会读取默认的设备文件,然后按照传入的 ¥seed 生成验证码图像,该变量不成所以常量,建议可以应用md5(uniqid())获得随机不冲突的¥seed
verify(¥seed, ¥userInput) 是验证验证码是否正确的办法,两个参数分别是随验证码一路发送到客户端的¥seed,一个是用户输入的数据,若是用户输入的值便是 Captcha 缓存中值就代表验证成功。
设备文件名为:captcha.conf.php
先来看设备文件:
<?php
// 容许输出的字符,去除了0,1,o,l如许轻易混合的字符,增长可辨识性
¥config[captcha.allow_chars] = 23456789abcdeghkmnpqsuvxyz;
// 验证码长度
¥config[captcha.length] = 4;
// 生成类的类名,若是你有更喜好的生成风格或者类,可以放到 captcha 目次下,然后更改下面的值为该生成类的类名
¥config[captcha.image_engine] = LtCaptchaImageEngine;
/
这里的设备内容主如果设置验证码的一些根蒂根基参数
blur 模糊结果,开启后图像处理惩罚速度会变慢
scale 图像质量,1代表低质量图像,2代表中等质量图像,3代表高质量图像
width 验证码宽
height 验证码高
max_rotation 设置字符顺时针扭转的倾斜度,为增长机械破译的难度的
/
¥config[captcha.image_engine_conf] = array(blur => false,scale => 2,width => 200,height => 80,max_rotation => 4);
下面的是输出验证码的视图典范:
{¥this->data[seed]} 这一句是 LotusPhp 的视图语法,代表输出 data[seed] 变量,可以对比今后的 MVC 章节
<html>
<head>
<meta charset=utf-8>
<title>Captcha LotusPHP</title>
</head>
<body>
<form action=simplest.php method=post>
<img src=captcha_image.php?seed={¥this->data[seed]}/>
<input type=hidden name=seed value={¥this->data[seed]} />
<br />
请输入上图中的验证码:<input type=text name=captcha_word />
<input type=submit />
</form>
</body>
</html>
这个是 captcha_image.php 文件代码:
¥captcha = new LtCaptcha;
¥captcha->init();
¥seed = md5(uniqid());
¥imageResource=¥captcha->getImageResource(¥_GET[seed]);
header(Content-type: image/png);
imagepng(¥imageResource);
验证文件 simplest.php 代码:
¥captcha = new LtCaptcha;
¥captcha->init();
if (¥captcha->verify(¥_POST[seed], ¥_POST[captcha_word]))
{
// 验证码正确,这里是处理惩罚代码
}
else
{
// 验证码错误,这里是处理惩罚代码
}
大功成功,Captcha 就介绍完了,来,我们来秀一下验证码
最后说一下常见的错误:
header(Content-type: image/png);
这一句以前不克不及有任何的输出,很多人在头部加上 ob_start() ,就会导致验证码呈现小八叉,一般无法输出多半是因为这个原因。