zoukankan      html  css  js  c++  java
  • 验证码

    一. 生成验证码

    在 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 ThinkVerify();
    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) .

  • 相关阅读:
    ParallelsDesktop在windows 10虚拟机重启后分辨率无法保存的问题解决方案
    Windows10 2021年5月功能更新(21H1)的三种方式
    Database "mem:XXX" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149 解决方案
    Win7/8下提示OpenSCManager failed 拒绝访问 解决方案
    将 Windows 更新代理更新到最新版本
    解决Eclipse中无法直接使用sun.misc.BASE64Encoder及sun.misc.BASE64Decoder的问题
    【Windows】U 盘装系统,无法格式化所选磁盘分区[错误: 0x8004242d]解决方案
    Boot Camp列表-苹果电脑Windows驱动下载
    selenium4 Timeouts is deprecated
    Selenium4实践1——对比Selenium3,Selenium4更新了什么?
  • 原文地址:https://www.cnblogs.com/jacson/p/4592282.html
Copyright © 2011-2022 走看看