在官方的这边只有session的方式,但是在一些特殊的情况下,前端请求后端数据时候没有带cookie信息,导致这种方式会失败。
方案:改成cache 的方式储存session
复制 Captcha.php 这个文件到项目中
在这个文件中执行如下步骤:
如果是phpstorm 按 ctrl + r
再执行
ok 基础类改造成cache 的类就完成了,下面使用方式和官方的方式一样,但是需要传一个id 识别这次请求的用户;
控制器验证:
$t = input('t');
$obj = new \app\common\System\Captcha();
if (!$obj->check($code,$t)) {
return fail('验证码错误');
}
获取图片的地址:
public function getVerify()
{
$t = input('t');
// $uniqid = uniqid(mt_rand(100000, 999999));
$config = [
// 验证码字体大小
'fontSize' => 25,
// 验证码位数
'length' => 4,
// 关闭验证码杂点
'useNoise' => false,
'useCurve' => false,
'bg' => [255, 255, 255],
'codeSet' => '0123456789'
];
$obj = new \app\common\System\Captcha(
$config
);
return $obj->entry($t);
}
前端获取图片的方式:
登录请求的方式要带 验证码的随机数
完毕!!!
双十一快乐