tp5 验证码使用

首先使用Composer安装think-captcha扩展包:

composer require topthink/think-captcha

验证码的简单用法

扩展包内定义了一些常见用法方便使用,以下示例说明
注意:需要开启URL路由。
模版内验证码的显示

<div>{:captcha_img()}</div>
或者
<div><img src="{:captcha_src()}" alt="captcha" /></div>

上面两种的最终效果是一样的,根据需要调用即可。
使用TP5的内置验证功能,添加captcha验证规则即可

$this->validate($data,[
    'captcha|验证码'=>'require|captcha'
]);
或者手动验证
if(!captcha_check($captcha)){
 //验证失败
};
验证码的自定义用法

如果项目未开启路由,或者有实际需求可自行调用Captcha类操作
验证码的生成:

$captcha = new Captcha();
return $captcha->entry();

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

$captcha = new Captcha();
return $captcha->entry(1);

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

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

验证码的配置参数

Captcha类带有默认的配置参数,支持自定义配置。这些参数包括:
如果使用了扩展内置的方法,务必在应用配置文件中配置,5.0.1及以上支持者在应用配置目录下面extra子目录内配置captcha.php文件
在这里插入图片描述
参数设置使用两种方式。
实例化传入参数:

$config =    [
    // 验证码字体大小
    'fontSize'    =>    30,    
    // 验证码位数
    'length'      =>    3,   
    // 关闭验证码杂点
    'useNoise'    =>    false, 
];
$captcha = new Captcha($config);
return $captcha->entry();

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

$captcha = new Captcha();
$captcha->fontSize = 30;
$captcha->length   = 3;
$captcha->useNoise = false;
return $captcha->entry();

验证码字体
默认情况下,验证码的字体是随机使用扩展包内 think-captcha/assets/ttfs目录下面的字体文件,我们可以指定验证码的字体,例如:

$captcha = new Captcha();
$captcha->fontttf = '5.ttf'; 
return $captcha->entry();

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

$captcha = new Captcha();
// 开启验证码背景图片功能 随机使用扩展包内`think-captcha/assets/bgs`目录下面的图片
$captcha->useImgBg = true; 
return $captcha->entry();

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

$captcha = new Captcha();
//中午 验证码字体使用扩展包内`think-captcha/assets/zhttfs`字体文件
$captcha->useZh = true; 
return $captcha->entry();

指定验证码字符
指定验证码的字符,可以设置:

$captcha = new Captcha();
// 设置验证码字符为纯数字
$captcha->codeSet = '0123456789'; 
return $captcha->entry();

如果是中文验证码,可以使用zhSet参数设置,例如:

$captcha = new Captcha();
$captcha->useZh = true;

// 设置验证码字符
$captcha->zhSet = ‘们以我到他会作时要动国产的一是工就年阶义发成部民可出能方进在了不和有大这’;

return $captcha->entry();

默认的验证码字符已经剔除了易混淆的1l0o等字符

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

tp5  验证码使用