验证码

一. 生成验证码

在 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) .

转载于:https://www.cnblogs.com/jacson/p/4592282.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值