验证码

一. 生成验证码

在 WeiBo/Home/Controller/UserController.class.php 中写入代码:

1 //实例化验证码类
2 $verify = new Verify();
1 //生成一个验证码图形
2 $verify->entry();

生成验证码如下:

 

PS:生成的验证码会将信息保存在session中,可以使用print_r($_SESSION)来查看。

查看信息如: Array([d2d977c58444271d9c780187e93f80e5] => Array([verify_code]=>a8074d9454e95c7bd00bfbe61564f91e [verify_time]=>1434883478)) 
如果想生成多个验证码,可以传递数字参数即可。

1 //生成第一个验证码
2 $verify->entry(1);
3 //生成第二个验证码
4 $verify->entry(2);

 

二.验证码参数

可以对生成的验证码设置相关的参数,以达到不同的显示效果

参数 描述
expire 验证码的有效期(秒)
useImgBg 是否使用背景图片 默认为 false
fontSize 验证码字体大小(像素) 默认为25
useCurve  是否使用混淆曲线 默认为 true
useNoise  是否添加杂点 默认为 true
imageW  验证码宽度 设置为0为自动计算
imageH 验证码高度 设置为0为自动计算
length  验证码位数
fontttf  指定验证码字体 默认为随机获取
useZh 是否使用中文验证码
bg  验证码背景颜色 rgb 数组设置,例如 array(243, 251, 254)
seKey 验证码的加密密钥
codeSet  验证码字符集合
zhSet  验证码字符集合(中文)
1  $config = array(
2   'fontSize' => 20,
3   'length'=>3,
4   'useNoise' => false,
5     );
6   $verify= new verify($config);
7   $verify->entry();
8     }

 

 1 上面,采用的配置变量方式来修改验证码参数,也可以使用动态设置方法:
 2 //实例化验证码类,并传入参数
 3 $verify =  new Verify();
 4 //验证码字体大小
 5 $verify->fontSize = 30;
 6 //验证码位数
 7 $verify->length = 3;
 8 //关闭验证码杂点
 9 $verify->useNoise =  false;
10 //生成验证码
11 $verify->entry();

 

1 //设置验证码字体
2 $verify->fontttf = '5.ttf';

 

1 //设置背景图片功能,随机使用
2 $verify->useImgBg =  true;

 

1 //取消曲线混淆
2 $verify->useCurve =  false;

 

1 //设置验证码的高
2 $verify->imageH = 100;
3 //设置验证码的宽
4 $verify->imageW = 100;

 

1 //设置验证码的长度
2 $verify->length = 3;

 

1 //设置验证码加密密钥
2 $verify->seKey = 'YCKU.COM';

注:加密函数可以在 ThinkPHP/Library/Think/verify.class.php 里查看

 

1 //设置验证码背景颜色
2 $verify->bg =  array(200,200,200);

 

如果想让验证码显示中文字符,那么需要几个步骤:
1.在  Think/zhttfs  文件夹下引入中文字体文件,比如加粗雅黑  msyhbd.ttf ;
2.设置字体文件;

1 //设置验证码字体
2 $verify->fontttf = 'msyhbd.ttf';

3.设置中文验证码

1 //设置中文验证码
2 $verify->useZh =  true;

PS:由于中文字符较为庞大,你也可以限定指定的中文字符。

1 //限定中文字符
2 $verify->zhSet = '我就爱这样';
1 //设置纯数字
2 $verify->codeSet='0123456789';

注:设置中文字体时,如果引入的字体后缀是.ttc文件,则 $verify->fontttf =  还是不变的。

设置纯数字时,要把对中文的设置全部去掉

 

三. 验证码检测

我们可以使用 ThinkPHP/Library/Think/verify.class.php  类中的 check 方法检测验证码是否输入正确。

第一步:在  WeiBo/Common/Common/function  里构建一个函数:

1 //函数$code 是验证码字符,$id 是第几个验证码,如果只有一个,可以忽略
2 function check_verify($code,$id='') {
3     $verify=new \Think\Verify();
4     return $verify->check($code,$id);
5 }

 

然后在 WeiBo/Home/Controller/UserController.class.php 中进行验证:

1 //通过输入验证,来验证,是否返回 true        
2 public function test() {
3     $code=I('get.code');
4     var_dump(check_verify($code));
5                 }

这时先测试得到index()函数的验证码,假设得到的验证码是19425,然后在浏览器地址栏输入 http://localhost/demo39/user/test?code=19425 ,这里在地址栏上加入 ?code=19425 ,在 I('get.code') 中获取,则test()函数输出为: bool(true) ,如果得到的验证码和地址栏最后的code的值不同,则为 bool(false) .

posted @ 2015-06-21 19:05  todaytoday  阅读(964)  评论(0编辑  收藏  举报