jason/captcha

Laravel 10/11/12/13 Captcha Package

Maintainers

Package info

github.com/jasonencode/captcha

Type:package

pkg:composer/jason/captcha

Statistics

Installs: 4

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.1.0 2026-03-24 07:10 UTC

This package is auto-updated.

Last update: 2026-03-24 07:10:59 UTC


README

License PHP Version

一个为 Laravel 10/11/12/13 深度定制的现代化验证码组件。基于 Intervention Image v3 构建,采用模块化设计,易于扩展和维护。

特性

  • PHP 8.2+ 强类型支持。
  • Intervention Image v3:使用最新的图像处理库,支持 GD 和 Imagick 驱动。
  • 模块化架构:解耦了验证码生成(Generators)、配置管理(Support)和图像绘制(ImageCreator)。
  • 性能优化:内置静态资源缓存,显著减少磁盘 I/O。
  • 无状态 API 支持:完美支持前后端分离项目。
  • 高度可定制:轻松定义多种验证码样式。

预览

Preview Example

安装

通过 Composer 安装:

composer require jason/captcha

在 Windows 环境下,确保 php.ini 中启用了 php_gd.dllphp_imagick.dll

配置

发布配置文件:

php artisan vendor:publish --provider="Jason\Captcha\CaptchaServiceProvider" --tag="config"

config/captcha.php 中,你可以定义多个验证码样式:

return [
    'default' => [
        'length' => 5,
        'width' => 120,
        'height' => 36,
        'quality' => 90,
        'math' => false,
        'expire' => 60,
    ],
    'math' => [
        'length' => 9,
        'width' => 120,
        'height' => 36,
        'math' => true,
    ],
    // ... 更多样式
];

使用方法

1. 传统 Session 模式

在视图中显示验证码:

<form method="POST" action="/register">
    @csrf
    <div>
        {!! captcha_img() !!}
        <input type="text" name="captcha" required>
    </div>
    <button type="submit">提交</button>
</form>

在控制器中进行验证:

public function store(Request $request)
{
    $request->validate([
        'captcha' => 'required|captcha',
    ]);

    // 验证通过后的逻辑...
}

2. 无状态 API 模式

获取验证码数据(JSON 响应): GET /captcha/api/default

返回示例:

{
    "sensitive": false,
    "key": "$2y$10$...", 
    "img": "data:image/jpeg;base64,..."
}

前端验证时,需将 key 一并传回后端:

public function apiStore(Request $request)
{
    $request->validate([
        'captcha' => 'required|captcha_api:' . $request->input('key') . ',default',
    ]);

    // 验证通过后的逻辑...
}

辅助函数

  • captcha(): 返回验证码图像响应。
  • captcha_src(string $style = 'default'): 返回验证码图片的 URL 字符串。
  • captcha_img(string $style = 'default', array $attrs = []): 返回验证码图片的 HTML <img> 标签。
  • captcha_check(string $value): 手动验证 Session 模式下的验证码。
  • captcha_api_check(string $value, string $key, string $style = 'default'): 手动验证 API 模式下的验证码。

架构

重构后的模块化设计:

鸣谢

本项目基于原 mews/captcha 进行现代化重构。

协议

MIT License