背景
最近被人问到用TP5使用验证码问题,这个在文档里直接有案例,但是小白确实会遇到一些问题,网上的很多叙述确实也不是很清晰,这里从小白的角度讲一下TP5使用验证码的流程和问题。另外也把部分小白不习惯使用composer,习惯手动加载的方案做简单介绍(附下载地址)
准备
TP5环境,解锁composer,安装captcha,captcha调用与验证
首先是TP5框架,这个就不说了,但是小白遇到的第一个问题是,他之前一直手动加载各类库的,没用过composer,我心想没用过也没关系,至少用过pip和npm,那就好解释了,不过他在使用是遇到第一个问题是composer环境问题(见问题1),解决后遇到各种环境问题,再成功安装后就可以按官方文档进行调用问题,但是文档中没有写具体应用,这里也做下完成的案例示范
这里简单说下准备工作
1.删除根目录下composer.lock的,这一步是为了给composer解锁
2.在根目录下运行:
composer require topthink/think-captcha
正常这两步就完成了,中途遇到问题请查看后面问题的部分。
代码
控制器
引用
use think\captcha\Captcha;
前端
官方1
<div>{:captcha_img()}</div>
官方2
<div><img src="{:captcha_src()}" alt="captcha" /></div>
实际使用中我们都会用到刷新功能,说我的建议是在控制器中写一个获取的方法,再在前端调用
控制器
public function verify()
{
$captcha = new \think\captcha\Captcha();
$captcha->imageW=121;
$captcha->imageH = 32; //图片高
$captcha->fontSize =14; //字体大小
$captcha->length = 4; //字符数
$captcha->fontttf = '5.ttf'; //字体
$captcha->expire = 30; //有效期
$captcha->useNoise = false; //不添加杂点
return $captcha->entry();
}
前端调用
<div ><img src="/if/verify" onclick="this.src=this.src+'?'"></div>
这样就可以实现点击刷星功能了。
验证方法
public function capCheck()
{
$p=input('captcha');
$captcha = new \think\captcha\Captcha();
$result=$captcha->check($p);
if($result===false){
return json(['code'=>1,'msg'=>'验证码错误']) ;
}else{
return json(['code'=>0,'msg'=>'验证码正确']) ;
}
}
根据自己的业务逻辑将上述方法进行修改
问题
问题1:composer禁止root用户使用问题。
方案1:添加新用户(方案网络自取)
方案2:升级到2.0以后版本,宝塔linux默认是1.X的,在宝塔后台可以看到,可以使用:
composer update
命令进行升级,升级后在使用root用户会有确认提示,输入yes即可使用
问题2:运行composer安装命令时提示被锁定
修改composer.lock文件即可,对于不知道怎么修改的小白,为了节省时间,可以选择直接删除,或者重命名。
问题3:如果不用composer能否安装?
可以,前往【码云】下载源码。地址:https://gitee.com/fastadminnet/think-captcha?_from=gitee_search
下载解压后将assets和src文件夹和composer.json文件放置在vendor/topthink/think-captcha下,然后修改根目录下的composer.json文件,即可使用