当前位置: 首页 > 新闻动态 > 技术教程

Laravel怎么实现验证码(Captcha)功能

作者:尼克 浏览: 发布日期:2025-12-21
[导读]:首先安装mews/captcha扩展包并发布配置文件以自定义验证码样式,接着在路由或控制器中生成验证码图像,通过Blade模板展示并支持点击刷新,最后在表单验证时使用captcha规则校验用户输入,同时可自定义错误提示信息,确保PHP已启用GD和FreeType扩展以支持图片生成。
首先安装 mews/captcha 扩展包并发布配置文件以自定义验证码样式,接着在路由或控制器中生成验证码图像,通过 Blade 模板展示并支持点击刷新,最后在表单验证时使用 captcha 规则校验用户输入,同时可自定义错误提示信息,确保 PHP 已启用 GD 和 FreeType 扩展以支持图片生成。

在 Laravel 中实现验证码(Captcha)功能,通常用于防止机器人自动提交表单,比如登录、注册或评论。最常见的方式是使用第三方扩展包 mews/captcha,它基于 GD 库生成图形验证码,集成简单且稳定。

1. 安装 Captcha 扩展包

在项目根目录运行以下命令安装 mews/captcha

composer require mews/captcha

如果你使用的是 Laravel 5.5 ~ 8.x 版本,服务提供者和门面会自动注册。Laravel 9 及以上版本建议检查是否需要手动注册。

2. 配置 Captcha(可选)

虽然默认配置可用,但你可以发布配置文件进行自定义:

php artisan vendor:publish --provider="Mews\Captcha\CaptchaServiceProvider"

这会在 config/captcha.php 生成配置文件,你可以修改验证码的长度、字体、背景颜色、扭曲程度等参数。

3. 生成验证码

在路由或控制器中生成验证码图像。例如,在路由中直接输出:

Route::get('captcha', function () { return captcha(); });

或者在控制器中:

class AuthController extends Controller { public function getCaptcha() { return response(captcha()->create('default', true))->header('Content-Type', 'image/png'); } }

也可以在 Blade 模板中使用 captcha_img() 直接显示:

点击刷新验证码通过添加随机参数防止缓存。

4. 验证用户输入

在表单提交时,使用验证规则 captcha 来校验输入:

$request->validate([ 'email' => 'required|email', 'password' => 'required', 'captcha' => 'required|captcha' ]);

如果用户输入的验证码不正确,会自动返回错误信息。你也可以手动检查:

if (!captcha_check($request->input('captcha'))) { return back()->withErrors(['captcha' => '验证码错误']); }

5. 自定义错误消息

resources/lang/zh_CN/validation.php(或其他语言文件)中添加:

'captcha' => '验证码不正确。',

这样可以统一提示语。

基本上就这些。使用 mews/captcha 能快速集成图形验证码,适合大多数 Laravel 项目。注意确保 PHP 开启了 GD 扩展和 FreeType 支持,否则无法生成图片。

免责声明:转载请注明出处:http://m.lexweb.cn/news/5246.html

扫一扫高效沟通

多一份参考总有益处

免费领取网站策划SEO优化策划方案

请填写下方表单,我们会尽快与您联系
感谢您的咨询,我们会尽快给您回复!