A simple captcha package for Laravel, supporting GD and ImageMagick libraries.
larva/laravel-captcha is a Laravel package for a simple captcha package for laravel, supporting gd and imagemagick libraries..
It currently has 0 GitHub stars and 69 downloads on Packagist (latest version 1.1.0).
Install it with composer require larva/laravel-captcha.
Discover more Laravel packages by larva
or browse all Laravel packages to compare alternatives.
Last updated
适用于 Laravel 的验证码服务,支持 GD 和 ImageMagick 两种图像库。
如果希望使用 ImageMagick 代替 GD,需安装 PHP Imagick 扩展(支持 PNG 格式)。
composer require larva/laravel-captcha -vv
安装后,建议发布配置文件和字体文件到项目目录,以便自定义:
# 发布配置文件到 config/captcha.php
php artisan vendor:publish --tag=captcha-config
# 发布字体文件到 resources/fonts/
php artisan vendor:publish --tag=captcha-fonts
发布配置文件后,可在 config/captcha.php 中调整以下参数:
| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| testLimit | int | 3 | 同一验证码最多可验证次数,超过后自动刷新。设为 0 表示不限制 |
| width | int | 120 | 验证码图片宽度(像素) |
| height | int | 50 | 验证码图片高度(像素) |
| padding | int | 2 | 文字与图片边缘的内边距(像素) |
| backColor | int | 0xFFFFFF | 背景颜色(十六进制),默认白色 |
| foreColor | int | 0x2040A0 | 字体颜色(十六进制),默认蓝色 |
| transparent | bool | false | 是否使用透明背景 |
| minLength | int | 6 | 验证码最小长度 |
| maxLength | int | 7 | 验证码最大长度 |
| offset | int | -2 | 字符间距,增大可提高可读性 |
| fontFile | string | resource_path('fonts/SpicyRice.ttf') | TrueType 字体文件路径 |
| imageLibrary | string | 'gd' | 图像渲染库,可选 'gd' 或 'imagick',留空则自动检测 |
安装后自动注册路由,直接访问即可输出验证码图片:
GET /captcha
在表单中引用:
<img src="https://raw.githubusercontent.com/larvatecn/laravel-captcha/refs/heads/main/captcha" alt="captcha" onclick="this.src='/captcha?v='+Math.random()">
点击图片即可刷新验证码。
通过添加 refresh 参数可以获取新的验证码信息(JSON 格式):
GET /captcha?refresh
返回内容:
{
"hash1": 623,
"hash2": 623,
"url": "http://your-domain/captcha?v=665a1b2c3d4e5"
}
使用返回的 url 更新图片 src 属性即可刷新验证码。
包中注册了 captcha 验证规则,可直接在验证规则中使用:
$validatedData = $request->validate([
'captcha' => 'required|captcha',
]);
通过 Captcha Facade 手动验证用户输入:
use Larva\Captcha\Captcha;
if (Captcha::validate($request->input('captcha'), false)) {
// 验证通过
}
在 phpunit 等测试环境中,验证器会自动将验证码固定为 1234,方便编写自动化测试。
也可以手动设置固定验证码:
use Larva\Captcha\Captcha;
Captcha::setFixedVerifyCode('test-code');