如何解决thinkphp5中验证码常见问题
在项目目录下面生成captcha扩展 (需要安装composer来安装)
composer require topthink/think-captcha
2 安装完成之后会呈现如上的目录。captcha扩展安装完成之后,就可以进行下一步操作
配置comfig.php文件:在comfig.php下面加个扩展
//验证码
'captcha'=> [
//字符集合
'codeset'=>'23456780qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM',
//字体大小
'fontSize' => 18,
//是否花混淆曲线
'useCurve' => true,
//图片高度
'imageH' => 40,
//图片宽度
'imageW' => 130,
//位数
'length' => 4,
//验证成功后是否重置
'reset' => true,
],
3.刷新验证码功能 src路径在这里可以用框架自带的也可以直接访问img方法
<img id="captcha_img" src="{:captcha_src()}" alt="验证码" onclick="refreshVerify()"><a
href="javascript:refreshVerify()">点击刷新</a>
在js《script》标签部分加上刷新事件
function refreshVerify()
{
var ts = Date.parse(new Date() )/1000;
console.log(ts);
$('#captcha_img').attr('src','/captcha?id='+ts);
}
4.在控制器里用TP验证自带的方法
在你的登录的控制器里面加入
4.1在头部引入 use think\captcha\Captcha;
//该方法引入img图像 宽高可以再img用css直接控制!
public function img() {
$captcha = new Captcha();
return $captcha->entry();
}
// 检测输入的验证码是否正确,$code为用户输入的验证码字符串,$id多个验证码标识
function check_verify($code, $id = ''){
$captcha = new Captcha();
return $captcha->check($code, $id);
}这个方法下面的验证要用到
在你的form验证码值发送的方法里加入 post提交 GET提交就把post改成get 表单验证码name是code
$request=request();
if ($request->isPost()){
if($request->post('code')){
if($this->check_verify($request->post('code'))){
$message= '验证成功';
}else{
$message= '验证错误';
}
}else{
$message= '没有输入验证码';
}
}
照以上做没有任何问题