Laravel怎么实现验证码(Captcha)功能
发布时间 - 2025-12-21 00:00:00 点击率:次首先安装 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\Captch
a\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 支持,否则无法生成图片。
# laravel
# php
# word
# composer
# ai
# 路由
# 配置文件
# 表单提交
# red
# if
# 表单验证
# require
# math
# class
# public
# pointer
# 并发
# function
# default
# this
# input
# 验证码
# 自定义
# 表单
# 器中
# 不正确
# 的是
# 如果你
# 你可以
# 提示信息
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
详解jQuery中基本的动画方法
微信小程序 HTTPS报错整理常见问题及解决方案
如何制作一个表白网站视频,关于勇敢表白的小标题?
如何快速搭建高效WAP手机网站?
如何快速搭建FTP站点实现文件共享?
如何在IIS中新建站点并解决端口绑定冲突?
JavaScript模板引擎Template.js使用详解
Laravel如何使用Livewire构建动态组件?(入门代码)
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
如何快速生成橙子建站落地页链接?
高端建站如何打造兼具美学与转化的品牌官网?
html如何与html链接_实现多个HTML页面互相链接【互相】
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
制作电商网页,电商供应链怎么做?
如何在阿里云购买域名并搭建网站?
深圳网站制作平台,深圳市做网站好的公司有哪些?
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
JS经典正则表达式笔试题汇总
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
香港服务器建站指南:免备案优势与SEO优化技巧全解析
Swift中switch语句区间和元组模式匹配
如何在阿里云高效完成企业建站全流程?
深入理解Android中的xmlns:tools属性
详解Android——蓝牙技术 带你实现终端间数据传输
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
活动邀请函制作网站有哪些,活动邀请函文案?
如何在阿里云通过域名搭建网站?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
香港服务器如何优化才能显著提升网站加载速度?
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
如何解决hover在ie6中的兼容性问题
网站制作软件免费下载安装,有哪些免费下载的软件网站?
,网页ppt怎么弄成自己的ppt?
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
phpredis提高消息队列的实时性方法(推荐)
PHP 500报错的快速解决方法
如何在阿里云部署织梦网站?
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
Laravel distinct去重查询_Laravel Eloquent去重方法
清除minerd进程的简单方法
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
Laravel PHP版本要求一览_Laravel各版本环境要求对照
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
Python文件异常处理策略_健壮性说明【指导】
如何用y主机助手快速搭建网站?

