fiberphp-ext/captcha

🔢 FiberPHP 验证码组件 —— 图形验证码与滑块验证码,支持防重放、自定义样式,集成 Session。

Maintainers

Package info

gitee.com/fiberphp-ext/captcha

pkg:composer/fiberphp-ext/captcha

Transparency log

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

dev-master 2026-08-23 06:58 UTC

This package is auto-updated.

Last update: 2026-08-23 06:58:14 UTC


README

图形验证码与滑块验证码,支持防重放、自定义样式。

目录结构

src/
├── Captcha.php                # 统一入口
├── Install.php                # 安装器(发布配置)
├── helpers.php                # 助手函数 captcha()
├── Contract/
│   └── DriverInterface.php    # 驱动契约
└── Driver/
    ├── ImageDriver.php         # 图形验证码(GD 绘制)
    └── SliderDriver.php        # 滑块验证码
config/
└── captcha.php                # 配置文件
tests/
├── CaptchaTest.php            # 8 个测试用例
└── bootstrap.php

安装

composer require fiberphp-ext/captcha

配置

config/captcha.php

return [
    'default' => 'image',
    'drivers' => [
        'image' => [
            'driver' => 'image',
            'width' => 120,
            'height' => 40,
            'length' => 4,
            'font' => 5,
            'noise' => 30,
            'curve' => true,
            'expire' => 300,
        ],
        'slider' => [
            'driver' => 'slider',
            'width' => 300,
            'height' => 150,
            'slider_width' => 50,
            'tolerance' => 5,
            'expire' => 300,
        ],
    ],
];

快速开始

图形验证码

// 生成(返回 key + base64 图片)
$captcha = captcha()->image();
// {"key":"captcha_abc123","image":"data:image/png;base64,..."}

// 前端展示
<img src="<?= $captcha['image'] ?>" alt="验证码">

// 验证(大小写不敏感,验证后自动销毁)
if (captcha()->verify($captcha['key'], $userInput)) {
    // 验证通过
}

滑块验证码

// 生成(返回背景图 + 滑块图)
$captcha = captcha()->slider();
// {"key":"slider_xyz789","bg":"data:...","slider":"data:..."}

// 前端拖动后验证
if (captcha()->verify($captcha['key'], $dragX)) {
    // 验证通过(容差范围内)
}

助手函数

captcha()->image();
captcha()->slider();
captcha()->verify($key, $input);

API

Captcha

方法说明
image()生成图形验证码,返回 ['key', 'image']
slider()生成滑块验证码,返回 ['key', 'bg', 'slider']
verify($key, $input)验证输入,验证后销毁

ImageDriver

  • 随机 4 位字母数字
  • GD 绘制 + 噪点干扰 + 曲线干扰
  • 防时序攻击(hash_equals
  • 一次性验证(验证后销毁)

SliderDriver

  • GD 生成渐变背景 + 滑块拼图
  • 容差验证(默认 ±5px)
  • 一次性验证

测试

composer install
./vendor/bin/phpunit

License

MIT