在官方的这边只有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);
}
前端获取图片的方式:
登录请求的方式要带 验证码的随机数
完毕!!!
双十一快乐