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

本文介绍了ThinkPHP框架中的验证码类,包括如何生成常规验证码和中文验证码。常规验证码由数字和字母组成,而中文验证码则需要字体文件支持,并需开启PHP的mbstring扩展。在实际开发中,除非必要,一般不推荐使用中文验证码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

验证码类

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

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

关于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中

生成常规验证码:

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

步骤:

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

第二步:输出图片;

代码:

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

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

输出结果:

 

生成中文验证码:

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

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

复制到zhttfs目录中

代码:

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

效果展示:

补充说明

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

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

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

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值