PHPackages                             jason/captcha - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Security](/categories/security)
4. /
5. jason/captcha

ActivePackage[Security](/categories/security)

jason/captcha
=============

Laravel 10/11/12/13 Captcha Package

v4.0.1(3w ago)5646↑258.3%2MITPHPPHP ^8.3

Since Mar 24Pushed 2w agoCompare

[ Source](https://github.com/jasonencode/captcha)[ Packagist](https://packagist.org/packages/jason/captcha)[ Docs](https://github.com/jasonencode/captcha)[ RSS](/packages/jason-captcha/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (9)Dependencies (16)Versions (11)Used By (2)

Captcha for Laravel 11/12/13
============================

[](#captcha-for-laravel-111213)

[![PHP Version](https://camo.githubusercontent.com/d91d3d1139cf0d8faaa80eeeeac7d3c59c9319e56960ef81c948e4160be4c4c1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253545382e322d3737376262342e737667)](https://packagist.org/packages/jason/captcha)[![Latest Version](https://camo.githubusercontent.com/157027252ae4b3e417c9113b34738ba456ec4a8b919cbf215cd8bb9025378a26/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6a61736f6e2f636170746368612e737667)](https://packagist.org/packages/jason/captcha)[![License](https://camo.githubusercontent.com/bebb3d198738abdb83aaed6f53fef1fa5600c50485ecd878172793738af44088/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6a61736f6e2f636170746368612e737667)](https://packagist.org/packages/jason/captcha)[![Downloads](https://camo.githubusercontent.com/26febcb036bbd3259ff5717618a90eb77befecedcc646dfbe4001ef40b198fe0/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6a61736f6e2f636170746368612e737667)](https://packagist.org/packages/jason/captcha)[![Laravel](https://camo.githubusercontent.com/911edb4d22e301c9e0bc96b729c50e4030d679750acae882c1d441aa1f721745/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c61726176656c2d3131253246313225324631332d7265642e737667)](https://laravel.com/)[![GitHub Stars](https://camo.githubusercontent.com/3fe36c8459e840a7c71a798dcd9bd32b9ca0ec6194684a963b6c102f3fc5f06a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6a61736f6e656e636f64652f636170746368613f7374796c653d736f6369616c)](https://github.com/jasonencode/captcha)

一个为 Laravel 11/12/13 深度定制的现代化验证码组件。基于 [Intervention Image v3](https://image.intervention.io/v3) 构建，采用模块化设计，易于扩展和维护。

特性
--

[](#特性)

- **PHP 8.2+** 强类型支持。
- **Intervention Image v3**：使用成熟的图像处理库，支持 GD 和 Imagick 驱动。
- **模块化架构**：解耦了验证码生成（Generators）、配置管理（Support）和图像绘制（ImageCreator）。
- **性能优化**：内置静态资源缓存（字体、背景图），显著减少磁盘 I/O。
- **无状态 API 支持**：完美支持前后端分离项目。
- **高度可定制**：预置 8 种验证码样式，支持自定义配置。
- **中文字符验证码**：内置 `ChineseGenerator`，支持中文汉字验证码。
- **加密传输**：支持 `encrypt` 选项，对验证码 key 进行加密后传输。

预览
--

[](#预览)

生成全部 8 种样式预览：

```
php preview.php
```

defaultmathnumberflatminiinverseadminchinese[![default](assets/preview/default.jpg)](assets/preview/default.jpg)[![math](assets/preview/math.jpg)](assets/preview/math.jpg)[![number](assets/preview/number.jpg)](assets/preview/number.jpg)[![flat](assets/preview/flat.jpg)](assets/preview/flat.jpg)[![mini](assets/preview/mini.jpg)](assets/preview/mini.jpg)[![inverse](assets/preview/inverse.jpg)](assets/preview/inverse.jpg)[![admin](assets/preview/admin.jpg)](assets/preview/admin.jpg)[![chinese](assets/preview/chinese.jpg)](assets/preview/chinese.jpg)> 💡 预览图为随机生成，每次运行 `php preview.php` 会重新生成不同内容。

安装
--

[](#安装)

通过 Composer 安装：

```
composer require "jason/captcha:^1.0"
```

在 Windows 环境下，确保 `php.ini` 中启用了 `php_gd.dll` 或 `php_imagick.dll`。

配置
--

[](#配置)

发布配置文件：

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

`config/captcha.php` 中预置了 8 种验证码样式：`default`、`math`、`number`、`flat`、`mini`、`inverse`、`admin`、`chinese`。

每个样式可独立配置以下选项：

选项类型默认值说明`length`int4验证码字符个数`width`int120图片宽度（px）`height`int36图片高度（px）`quality`int90JPEG 输出质量（0-100）`math`boolfalse算术模式，生成加减乘算式`expire`int60有效期（秒）`encrypt`boolfalse是否加密验证码 key 后传输`sensitive`boolfalse是否区分大小写`angle`int15字符最大旋转角度`lines`int3干扰线数量`lineWidth`int1干扰线宽度（px）`lineColor`string`#ff00ff`干扰线颜色（十六进制）`bgImage`booltrue是否使用随机背景图片`bgColor`string`#ffffff`背景颜色（bgImage=false 时生效）`fontColors`array—字体颜色列表，每个字符随机选取`contrast`int0对比度调整（负值降低、正值增加）`sharpen`int0锐化强度`blur`int0模糊强度`invert`boolfalse反转图片颜色`characters`array—自定义字符集`marginTop`int自动文字上边距（px）`textLeftPadding`int4文字左边距（px）`fontsDirectory`string包内路径自定义字体目录`bgsDirectory`string包内路径自定义背景图目录示例——`math` 样式（算术验证码）：

```
'math' => [
    'length' => 9,
    'width' => 120,
    'height' => 36,
    'quality' => 90,
    'math' => true,
],
```

`chinese` 样式（中文字符验证码）：

```
'chinese' => [
    'length' => 4,
    'width' => 120,
    'height' => 36,
    'sensitive' => true,
    'angle' => 20,
    'lines' => 4,
],
```

使用方法
----

[](#使用方法)

### 1. 传统 Session 模式

[](#1-传统-session-模式)

在视图中显示验证码：

```

    @csrf

        {!! captcha_img() !!}

    提交

```

在控制器中进行验证：

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

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

### 2. 无状态 API 模式

[](#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 `` 标签。
- `captcha_check(string $value)`: 手动验证 Session 模式下的验证码。
- `captcha_api_check(string $value, string $key, string $style = 'default')`: 手动验证 API 模式下的验证码。

架构
--

[](#架构)

采用模块化分层设计，各层职责清晰、易于扩展：

层类职责**内容生成**[CaptchaGenerator](src/Contracts/CaptchaGenerator.php) — `StringGenerator`、`MathGenerator`、`ChineseGenerator`生成验证码内容（字符串、算术表达式、中文汉字）**图像渲染**[ImageCreator](src/Image/ImageCreator.php)将内容绘制为验证码图片（背景/文字/干扰线/特效）**配置管理**[Support/Config](src/Support/Config.php)合并全局配置与样式配置**核心编排**[Captcha](src/Captcha.php)协调生成与验证流程，支持 Session/API 两种模式**Facade**[Facades/Captcha](src/Facades/Captcha.php)提供简洁的静态访问接口鸣谢
--

[](#鸣谢)

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

协议
--

[](#协议)

[MIT License](LICENSE)

###  Health Score

49

—

FairBetter than 94% of packages

Maintenance96

Actively maintained with recent releases

Popularity23

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~8 days

Recently: every ~0 days

Total

10

Last Release

21d ago

Major Versions

v1.4.0 → v4.0.02026-06-02

PHP version history (2 changes)v1.0.0PHP ^8.2

v4.0.0PHP ^8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/b057654b5ef7e0c8fa3a6808cf812053ac9a7ce2bbd637c8f8889171db8572c1?d=identicon)[jasonencode](/maintainers/jasonencode)

---

Top Contributors

[![jasonencode](https://avatars.githubusercontent.com/u/2210843?v=4)](https://github.com/jasonencode "jasonencode (11 commits)")

---

Tags

captchaLaravel Securitylaravel-captcha

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/jason-captcha/health.svg)

```
[![Health](https://phpackages.com/badges/jason-captcha/health.svg)](https://phpackages.com/packages/jason-captcha)
```

###  Alternatives

[unopim/unopim

UnoPim Laravel PIM

10.3k2.2k](/packages/unopim-unopim)[mews/captcha

Laravel 5/6/7/8/9/10/11/12 Captcha Package

2.6k5.7M88](/packages/mews-captcha)[code16/sharp

Laravel Content Management Framework

79062.6k7](/packages/code16-sharp)[captcha-com/laravel-captcha

Laravel Captcha Package -- BotDetect PHP CAPTCHA generator integration for the Laravel framework.

38208.5k](/packages/captcha-com-laravel-captcha)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
