关于thinkphp验证码的那些事
首先,如果我们要使用thinkphp的验证码功能,有2种方法:
1.去下载完整版的thinkphp框架
2.通过composer安装对应的验证码类库,在命令行下面切换到你的应用根目录下面,执行:
composer require topthink/think-captcha
(具体参考composer安装手册)
安装完我们可以就可以开心愉快的玩thinkphp;
同样,首先这里我们也需要配置一下验证码的参数:
'captcha' => [
// 验证码字符集合
'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
// 验证码字体大小(px)
'fontSize' => 25,
// 是否画混淆曲线
'useCurve' => true,
// 验证码图片高度
'imageH' => 30,
// 验证码图片宽度
'imageW' => 100,
// 验证码位数
'length' => 5,
// 验证成功后是否重置
'reset' => true
],
配置完成后,我们有2种方法可以选择,
1.可以通过captcha_src()来控制验证码,
<img src="{:captcha_src()}" alt="点击更换" />
这样就可以通过直接传src地址来控制了
if(!captcha_check($captcha)){
判断失败后做什么
}
这里我们也可以研究一下源码
function captcha_src($id = "")
{
return \think\Url::build('/captcha' . ($id ? "/{$id}" : ''));
}
2.也可以通过captcha_img()来控制验证码,这里我们直接
{:captcha_img()}
这样就可以了,不过这样是通过return一段结构到前端,(不是太好)
我们可以研究一下它的源码
function captcha_img($id = "")
{
return '<img src="' . captcha_src($id) . '" alt="点击更换" />';
}
但是通常我们会有点击图片更换刷新验证码的要求,通过第二种方法就很简单,每次只要在return的结构中改变$id就可以满足我们的效果,
但是这样我们有时候想要改变这些图片就不太好,因为还要返回到php里面来改源码,我们可以尽量做到只是传数据就能改变。
这里我们就可以通过第一种方法来改变验证码。(这里有一个比较坑爹的地方)