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

  • 相关阅读:
    Atitit.ati  str  字符串增强api
    Atitit.加密算法 des  aes 各个语言不同的原理与解决方案java php c#
    Atitit.加密算法 des  aes 各个语言不同的原理与解决方案java php c#
    Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本
    Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本
    Atitit.软件开发的最终的设计 dsl化,ast化(建立ast, 解析执行ast)
    Atitit.软件开发的最终的设计 dsl化,ast化(建立ast, 解析执行ast)
    swfupload 上传控件的配置
    SWFUpload下载地址
    js 转化类似这样的时间( /Date(1389060261000)/)问题
  • 原文地址:https://www.cnblogs.com/jacson/p/4592282.html
Copyright © 2011-2022 走看看