详解ThinkPHP框架之验证码

下面由thinkphp教程栏目给大家介绍thinkphp框架之验证码 ,希望对需要的朋友有所帮助!

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

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

$Verify = new ThinkVerify();$Verify->entry();

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

详解ThinkPHP框架之验证码

立即学习“PHP免费学习笔记(深入)”;

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

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

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

验证码参数

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

参数 描述

expire验证码的有效期(秒)useImgBg是否使用背景图片 默认为falsefontSize验证码字体大小(像素) 默认为25useCurve是否使用混淆曲线 默认为trueuseNoise是否添加杂点 默认为trueimageW验证码宽度 设置为0为自动计算imageH验证码高度 设置为0为自动计算length验证码位数fontttf指定验证码字体 默认为随机获取useZh是否使用中文验证码bg验证码背景颜色 rgb数组设置,例如 array(243, 251, 254)seKey验证码的加密密钥codeSet验证码字符集合 3.2.1 新增zhSet验证码字符集合(中文) 3.2.1 新增

默认参数配置:

详解ThinkPHP框架之验证码

参数设置使用两种方式。

实例化传入参数:

详解ThinkPHP框架之验证码

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

详解ThinkPHP框架之验证码

代码小浣熊 代码小浣熊

代码小浣熊是基于商汤大语言模型的软件智能研发助手,覆盖软件需求分析、架构设计、代码编写、软件测试等环节

代码小浣熊 51 查看详情 代码小浣熊

验证码字体

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

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

背景图片

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

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

中文验证码

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

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

显示效果如图:

详解ThinkPHP框架之验证码

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

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

验证码检测

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

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

练习:以登录为例:

控制器方法:

display();            }            else        {            $code = $_POST["yzm"];             $verify = new ThinkVerify();           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 ThinkVerify($config);        $Verify->entry(2);//参数是生成验证码的标示,适用于同一个页面有多个验证码的时候,生成验证码的标示必须与检测验证码的标示相同,否则验证码不正确    }?>

请求Login方法:

详解ThinkPHP框架之验证码

以上就是详解ThinkPHP框架之验证码的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/486418.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 13:39:32
下一篇 2025年11月8日 13:40:27

相关推荐

发表回复

登录后才能评论
关注微信