zoukankan      html  css  js  c++  java
  • ThinkPHP 实现验证码渲染、校验、点击刷新

    一、在控制器中写方法,生成验证码,代码如下:

    /**
        * 验证码生成
        * 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 新增
        **/
        public function verify_c(){
            $Verify = new ThinkVerify();
            $Verify->fontSize = 18;
            $Verify->length   = 4;
            $Verify->useNoise = false;
            $Verify->codeSet = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';
            $Verify->imageW = 130;
            $Verify->imageH = 50;
            //$Verify->expire = 600;
            $Verify->entry();
        }

      可以根据自己的需求配置参数

    二、在页面渲染,生成的验证码就是一张图片,静态页面代码如下:

    <p>
        <input type="text" name="verify" class="captcha-text" placeholder="请输入验证码">
        <i class="yanzheng"><img alt="验证码" id="captcha-container" src="{:ROOT}index.php?m=Admin&c=Verify&a=verify_c" title="点击刷新"></i>
    </p>

      img的src就是生成验证码的地址

    三、点击验证码图片刷新,生成新的验证码,就是通过js修改img的src属性,后面加一个参数random。js代码如下:

    <script>
        /*验证码图片点击刷新*/
        var captcha_img = $('#captcha-container'); 
        var verifyimg = captcha_img.attr("src");
        captcha_img.attr('title', '点击刷新');
        captcha_img.click(function(){  
            if( verifyimg.indexOf('?')>0){
                $(this).attr("src", verifyimg+'&random='+Math.random());  
            }else{  
                $(this).attr("src", verifyimg.replace(/?.*$/,'')+'?'+Math.random());  
            }  
        });
    </script>

    四、验证码校验,表单提交后获取到用户输入的验证码,

    // 检查验证码  
    $verify = I('post.verify');
    if(!check_verify($verify)){
        $this->error("验证码错误",$this->site_url,9);
    }

    然后将check_verify()函数放到公共的php中,方便整个项目用,代码如下:

    //验证码检查
    function check_verify($code, $id = ""){  
        $verify = new ThinkVerify();  
        return $verify->check($code, $id);  
    }

    $id是生成验证码的id如果只有一个验证码就不需要了。

    补充:生成多个验证码时,需要给每个验证码设置id,即调用$Verify->entry()时,在括号中传入id值。

    验证码1:
    $Verify->entry(1);
    验证码1:
    $Verify->entry(2);
  • 相关阅读:
    重定向丶管道丶参数传递
    zabbix监控redis
    zabbix监控mysql
    playbook
    zabbix通过jvm监控tomcat
    zabbix监控tcp状态
    部署centos6
    自动选择profile
    java jvm学习笔记十二(访问控制器的栈校验机制)
    java jvm学习笔记十一(访问控制器)
  • 原文地址:https://www.cnblogs.com/rendd/p/6952090.html
Copyright © 2011-2022 走看看