ThinkPHP框架之验证码的使用案例
创始人
2024-11-24 03:24:12
0次

Think\Verify类可以支持验证码的生成和验证功能。

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

$Verify = new \Think\Verify();$Verify->entry();

上面的代码会生成默认的验证码图片并输出,显示如下:

ThinkPHP框架之验证码的使用案例

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

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

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

验证码参数

可以对生成的验证码设置相关的参数,以达到不同的显示效果。这些参数包括:

参数描述
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 新增

默认参数配置:

ThinkPHP框架之验证码的使用案例

参数设置使用两种方式。

实例化传入参数:

ThinkPHP框架之验证码的使用案例

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

ThinkPHP框架之验证码的使用案例

验证码字体

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

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

背景图片

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

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

中文验证码

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

$Verify = new \Think\Verify();// 验证码字体使用 ThinkPHP/Library/Think/Verify/zhttfs/simhei.ttf$Verify->useZh = true;$Verify->entry();

显示效果如图:

ThinkPHP框架之验证码的使用案例

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

若ThinkPHP/Library/Think/Verify/zhttfs/里面没有中文字体文件,可以下载或者从C:\Windows\Fonts\里面找到中文字体文件复制过来,注意字体文件扩展名为.ttf。

验证码检测

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

// 检测输入的验证码是否正确,$code为用户输入的验证码字符串function check_verify($code, $id = ''){$verify = new \Think\Verify();return $verify->check($code, $id);
}

练习:以登录为例:

控制器方法:

display();    
        }    
        else
        {            $code = $_POST["yzm"];             $verify = new \Think\Verify();           if($verify->check($code,2)) //code是用户输入的值 ,2是验证码检测标示,必须与生成的验证码标示相同才能验证            {                if($_POST["uid"]!="" && $_POST["pwd"]!="")
                {                    $model = D("Users");                    $uid = $_POST["uid"];    
                    $pwd = $_POST["pwd"];                    $attr = $model->field("Pwd")->find($uid);                    //var_dump($attr);
                    if($pwd==$attr["pwd"])
                    {
                        session("uid",$uid);   // 跳转页面之前将$uid存入session                    $this->success("登录成功!","Main");                                            }                    else
                    {                        $this->error("登录失败!");    
                    }
                }                else
                    {                        $this->error("用户名或者密码不能为空!");    
                    }
            }            else
            {                $this->error("验证码不正确!");    
            }
        }        
    }//生成验证码的操作方法
    function yzm()
    {        $config =    array(    
            'fontSize'    =>    30,    // 验证码字体大小    
            'length'      =>    4,     // 验证码位数  
            'useCurve'    =>    true,  // 是否画混淆曲线  
            'useNoise'    =>    true,  // 关闭验证码杂点
            'expire'      =>    60,    // 验证码有效期(秒)
            'useImgBg'    =>    false,  // 使用背景图片
            'useZh'       =>    true,  // 使用中文验证码
            'imageW'      =>    240,   // 验证码宽度
            'imageH'      =>    60,    // 验证码高度
            'fontttf'     =>    'simhei.ttf', // 验证码字体        );        $Verify = new \Think\Verify($config);        $Verify->entry(2);//参数是生成验证码的标示,适用于同一个页面有多个验证码的时候,生成验证码的标示必须与检测验证码的标示相同,否则验证码不正确    }?>

请求Login方法:

ThinkPHP框架之验证码的使用案例

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...