zoukankan      html  css  js  c++  java
  • tp框架之验证码

    控制器

    function yzm()
        {
            /*$config =    array(    
            'fontSize'    =>    30,    // 验证码字体大小    
            'length'      =>    4,     // 验证码位数
            'useImgBg'=>true,
            'useZh'=>true,
            'fontttf'=>'SIMYOU.TTF',
            'zhSet'=>'啊是的分个好就看了'
            
            );*/
            //$v=new     ThinkVerify($config);  //随机自己定义的验证码
            
            $v=new     ThinkVerify();  //使用默认验证码
            $v->entry(1);  //如果你需要在一个页面中生成多个验证码的话,entry方法需要传入可标识的信息,例如:验证码1
    
        }
        
        function xianshi()
        {
            if(empty($_POST))
            {
                $this->display();
            }
            else
            {
                $yzm=$_POST["yzm"];    
                
                $verify = new ThinkVerify();
                
                var_dump($verify->check($yzm,1));  //1代表第几个验证码
            }    
        }
    View Code

    显示页面

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <load href="__PUBLIC__/JS/jquery-1.11.2.min.js" />
    </head>
    
    <body>
    <form action="__ACTION__" method="post">
    <img id="y" src="__CONTROLLER__/yzm" />
    <input type="text" name="yzm" />
    <input type="submit" value="提交" />
    </form>
    </body>
    <script type="text/javascript">
    $(document).ready(function(e) {
        $("#y").click(function(){
            
            var sj=Math.random();  //获取一个随机数
            
            $(this).attr("src","__CONTROLLER__/yzm/c"+sj+"");  //针对ie浏览器,每次都传一个不同的数过去,才能重新加载,别的浏览器不需要
            
            })
    });
    </script>
    </html>
    View Code

    ThinkVerify类可以支持验证码的生成和验证功能。

    生成验证码

    下面是最简单的方式生成验证码:

    1. $Verify = new ThinkVerify();
    2. $Verify->entry();

    生成的验证码信息会保存到session中,包含的数据有:

    1. array('verify_code'=>'当前验证码的值','verify_time'=>'验证码生成的时间戳')

    如果你需要在一个页面中生成多个验证码的话,entry方法需要传入可标识的信息,例如:验证码1:

    1. // 验证码1
    2. $Verify = new ThinkVerify();
    3. $Verify->entry(1);

    验证码2:

    1. // 验证码2
    2. $Verify = new ThinkVerify();
    3. $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 验证码字符集合 3.2.1 新增
    zhSet 验证码字符集合(中文) 3.2.1 新增

    参数设置使用两种方式。

    实例化传入参数:

    1. $config = array(
    2. 'fontSize' => 30, // 验证码字体大小
    3. 'length' => 3, // 验证码位数
    4. 'useNoise' => false, // 关闭验证码杂点
    5. );
    6. $Verify = new ThinkVerify($config);
    7. $Verify->entry();

    或者采用动态设置的方式,如:

    1. $Verify = new ThinkVerify();
    2. $Verify->fontSize = 30;
    3. $Verify->length = 3;
    4. $Verify->useNoise = false;
    5. $Verify->entry();

    验证码字体

    默认情况下,验证码的字体是随机使用 ThinkPHP/Library/Think/Verify/ttfs/目录下面的字体文件,我们可以指定验证码的字体,例如:

    1. $Verify = new ThinkVerify();
    2. // 验证码字体使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf
    3. $Verify->fontttf = '5.ttf';
    4. $Verify->entry();

    背景图片

    支持验证码背景图片功能,可以如下设置:

    1. $Verify = new ThinkVerify();
    2. // 开启验证码背景图片功能 随机使用 ThinkPHP/Library/Think/Verify/bgs 目录下面的图片
    3. $Verify->useImgBg = true;
    4. $Verify->entry();

    中文验证码

    如果要使用中文验证码,可以设置:

    1. $Verify = new ThinkVerify();
    2. // 验证码字体使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf
    3. $Verify->useZh = true;
    4. $Verify->entry();

    如果无法正常显示,请确认你的 ThinkPHP/Library/Think/Verify/zhttfs/ 目录下面存在中文字体文件。

    指定验证码字符

    3.2.1版本以上,我们可以指定验证码的字符,通过重新设置codeSet参数即可,例如:

    1. $Verify = new ThinkVerify();
    2. // 设置验证码字符为纯数字
    3. $Verify->codeSet = '0123456789';
    4. $Verify->entry();

    如果是中文验证码,可以使用zhSet参数设置,例如:

    1. $Verify = new ThinkVerify();
    2. $Verify->useZh = true;
    3. // 设置验证码字符
    4. $Verify->zhSet = '们以我到他会作时要动国产的一是工就年阶义发成部民可出能方进在了不和有大这';
    5. $Verify->entry();

    验证码检测

    可以用ThinkVerify类的check方法检测验证码的输入是否正确,例如,下面是封装的一个验证码检测的函数:

    1. // 检测输入的验证码是否正确,$code为用户输入的验证码字符串
    2. function check_verify($code, $id = ''){
    3. $verify = new ThinkVerify();
    4. return $verify->check($code, $id);
    5. }
  • 相关阅读:
    财务报表分析(张新民教授)-第五章 企业报表战略分析(1):资源配置战略(续)
    财务报表分析(张新民教授)-第五章 企业报表战略分析(1):资源配置战略
    财务报表分析(张新民教授)-第四章 企业经营活动与财务报表的关系
    以商品为生25:交易商品价差
    以商品为生22:页岩油与水力压裂的优缺点
    以商品为生17:石油价格历史——自1974年以来的高点和低点
    以商品为生15:商品交易中的Backwardation和Contango
    以商品为生14:大宗商品投资者的大豆交易指南
    以商品为生11:来自USDA的月度WASDE报告
    AJAX 跨域请求
  • 原文地址:https://www.cnblogs.com/bilibiliganbei/p/6225346.html
Copyright © 2011-2022 走看看