代码示例
生成验证码
use app\common\service\CaptchaService;
// 生成验证码图片(返回 Response 对象)
$captcha = new CaptchaService();
return $captcha->generate(90, 32);
// 参数: 宽度, 高度(默认90x32)
// 生成4位随机数字验证码,存入 Session
// Session key: 'captcha_code'
验证码校验
$captcha = new CaptchaService();
// 验证用户输入
$result = $captcha->verify($code);
if ($result) {
// 验证通过,Session 中的验证码自动删除
// 防止重复使用
} else {
// 验证失败
}
在登录表单中使用
// 控制器中生成验证码
public function captcha()
{
$captcha = new CaptchaService();
return $captcha->generate();
}
// 控制器中验证
public function login()
{
$captcha = new CaptchaService();
if (!$captcha->verify(input('captcha'))) {
return '验证码错误';
}
// 继续登录逻辑...
}
CaptchaService 说明
验证码流程
1. 前端请求验证码图片 → generate() 生成4位数字验证码
2. 验证码值存入 Session(key: captcha_code)
3. 用户提交表单时输入验证码
4. 后端调用 verify() 校验,成功后自动删除 Session
技术实现
• 使用 GD 库绘制验证码图片
• 4位随机数字,带干扰线和噪点
• 验证通过后立即删除 Session 中的验证码,防止重复使用