zaymedia/captcha

一个易于安装的自托管图像验证码库,使用PHP + InterventionImage实现。

1.0.1 2023-09-02 07:13 UTC

This package is not auto-updated.

Last update: 2024-09-29 10:45:11 UTC


README

这是一个易于安装的自托管图像验证码库。通过一个预定义的字典,该库生成必须按照特定顺序选择的图像。

此验证码解决方案可能不是100%安全,但与其他流行的验证码服务结合使用,将为您的平台提供额外的安全层。

example

内容

安装

您可以通过composer安装此包

composer require zaymedia/captcha

使用

要开始使用此包,您必须使用make()静态方法,并将标识符字符串作为第一个参数传递。此标识符参数将用于存储和获取生成的挑战和解决方案。

Use ZayMedia\Captcha\Captcha;
use ZayMedia\Captcha\CacheAdapters\SimpleFileCacheAdapter;

$captcha = Captcha::make('1', new SimpleFileCacheAdapter(__DIR__ . '/cache'));

var_dump($captcha->generateLinks());

通常,您应该使用用户ID、IP地址或生成的cookie。

缓存适配器

为了使用Captcha类,您需要选择一个缓存适配器,以便它可以将生成的挑战存储在某个地方。默认情况下,该包提供了以下适配器

  • \ZayMedia\Captcha\CacheAdapters\LaravelCacheAdapter
  • \ZayMedia\Captcha\CacheAdapters\SimpleFileCacheAdapter

但是,您可以创建并使用自己的适配器,该适配器扩展了抽象适配器类

use ZayMedia\Captcha\CacheAdapters\AbstractCacheAdapter;

class MyCustomCacheAdapter extends AbstractCacheAdapter
{
    public function remember(string $key, int $expiresIn, callable $callback): mixed
    {
        //
    }

    public function get(string $key): mixed
    {
        //
    }

    public function forget(string $key): bool
    {
        //
    }
}

生成链接

您可以使用generateLinks()方法生成/检索验证码链接。您可以将要生成的链接数量作为第一个参数传递。如果找不到链接,此方法会从缓存中获取生成的链接值并生成。

$links = $captcha->generateLinks(amount: 3);

验证答案

您可以使用validateAnswer()方法验证用户答案。

$captcha->validateAnswer($answer);

清除链接

您可以通过清除当前缓存值并强制重新生成一个新的验证码挑战来刷新当前缓存值。当用户提交错误答案时,强烈建议使用此方法。

$captcha->flushLinks();

自定义选项

在生成验证码图像时,您可以选择启用/禁用一些选项。

// Enable or Disable image noise (Default: true)
$captcha->noise(value: false);

// Enable or Disable image background (Default: false)
$captcha->background(value: true);

// Enable or Disable dark theme (Default: false)
$captcha->darkTheme(value: true);

您还可以自定义单词宇宙。您可以覆盖单词宇宙或将其数组与默认数组合并。

$wordUniverse = [...];

$captcha->wordUniverse($wordUniverse);
// Or...
$captcha->mergeWordUniverse($wordUniverse);

许可证

验证码是开源软件,许可协议为MIT许可证