欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ThinkPHP中的功能类——验证码类

程序员文章站 2024-01-24 19:58:40
...

验证码类

验证码:captcha(全自动识别机器与人类的图灵测试)。常见验证码可以分为三种:页面上的图片形式、短信验证码、语音验证码

在ThinkPHP中,为了提高开发效率,系统封装了一个验证码类:Verify.class.php

关于ThinkPHP中的验证码底层代码的介绍:

具体实现代码的位置路径:

ThinkPHP中的功能类——验证码类

方法:

构造方法:在实例化的时候可以传递一个数组,用于和其成员属性config进行合并,生成新的配置

public function __construct($config=array()){
        $this->config   =   array_merge($this->config, $config);
    }

Check方法:校验验证码,传递参数,用户输入的验证码

public function check($code, $id = '') {
        $key = $this->authcode($this->seKey).$id;
        // 验证码不能为空
        $secode = session($key);
        if(empty($code) || empty($secode)) {
            return false;
        }
        // session 过期
        if(NOW_TIME - $secode['verify_time'] > $this->expire) {
            session($key, null);
            return false;
        }

        if($this->authcode(strtoupper($code)) == $secode['verify_code']) {
            $this->reset && session($key, null);
            return true;
        }

        return false;
    }

Entry方法:输出图片,保存验证码到session中

ThinkPHP中的功能类——验证码类

生成常规验证码:

常规验证码是指有数字+大小写字母组成的验证码。

步骤:

第一步:实例化验证码类;

第二步:输出图片;

代码:

    //生成常规验证码
    public function test(){
        //配置
        $cfg = array(
            'fontSize'  =>  20,              // 验证码字体大小(px)
            'useCurve'  =>  false,            // 是否画混淆曲线
            'useNoise'  =>  false,            // 是否添加杂点  
            'length'    =>  4,               // 验证码位数
            'fontttf'   =>  '4.ttf',          // 验证码字体,不设置随机获取

        );
        //实例化验证码类
        $Verify = new \Think\Verify($cfg);
        //输出验证码
        $Verify -> entry();
    }

输出结果:

ThinkPHP中的功能类——验证码类

 

生成中文验证码:

需要字体文件,字体文件可以在自己的计算机中找到:

打开系统设置搜索“字体”,然后搜索黑体:

ThinkPHP中的功能类——验证码类

复制到zhttfs目录中

ThinkPHP中的功能类——验证码类

代码:

    //生成中文验证码
    public function test(){
        //配置
        $cfg = array(
            'useZh'     =>  true,           // 使用中文验证码 
            'fontSize'  =>  20,              // 验证码字体大小(px)
            'useCurve'  =>  false,            // 是否画混淆曲线
            'useNoise'  =>  false,            // 是否添加杂点  
            'length'    =>  4,               // 验证码位数
        );
        //实例化验证码类
        $Verify = new \Think\Verify($cfg);
        //输出验证码
        $Verify -> entry();
}

效果展示:

ThinkPHP中的功能类——验证码类

补充说明

关于中文验证码的几点说明:

第一:以后在实际开发的时候不到万不得已不要使用中文验证码;

第二:中文验证码需要中文字体的支持,中文字体可以在自己计算机中找到,当也可以去字体网站下载(比如说站长之家chinaz.com);

第三:使用中文验证码必须开启php的扩展mbstring

ThinkPHP中的功能类——验证码类

 

 

相关标签: ThinkPHP