silverstripe-terraformers/turnstile-captcha

Silverstripe CMS Turnstile Captcha垃圾邮件保护字段

安装次数: 2,319

依赖关系: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 0

开放问题: 0

类型:silverstripe-vendormodule

0.0.4 2023-07-11 01:31 UTC

This package is auto-updated.

Last update: 2024-09-11 03:49:04 UTC


README

使用Cloudflare的Turnstile CAPTCHA服务为SilverStripe用户表单添加“垃圾邮件保护”字段。

需求

安装

composer require silverstripe-terraformers/turnstile-captcha

通过composer或手动安装模块后,您必须将垃圾邮件保护器设置为TurnstileCaptchaProtector,这需要在您网站的配置文件中设置,通常这是mysite/_config/config.yml。

SilverStripe\SpamProtection\Extension\FormSpamProtectionExtension:
    default_spam_protector: Terraformers\TurnstileCaptcha\Forms\TurnstileCaptchaProtector

最后,通过在表单对象上调用enableSpamProtection()来将“垃圾邮件保护”字段添加到您的表单中。

$form->enableSpamProtection();

配置

通过环境变量设置site_keysecret_key

SS_TURNSTILE_SITE_KEY=""
SS_TURNSTILE_SECRET_KEY=""

您可以从您的Cloudflare账户中获取这些信息,请参考turnstile文档

您可以在网站的yaml配置文件(通常是mysite/_config/config.yml)中添加一些可选的配置设置。

Terraformers\TurnstileCaptcha\Forms\TurnstileCaptchaField:
    default_theme: "light" #Default theme color (optional, light or dark, defaults to auto)
    default_render_type: 'explicit' #Default setting for how to render the widget. See the "Render Type" section below.

TurnstileCaptchaField使用Guzzle与Cloudflare通信。如果您想更改HTTP连接设置(例如代理设置),您可以通过注入器配置自己的HttpClient类。

SilverStripe\Core\Injector\Injector:
    Terraformers\TurnstileCaptcha\Http\HttpClient:
        class: App\HttpClient

添加字段标签

如果您想在TurnstileCaptchaField字段上添加字段标签或帮助文本,可以像这样操作

$form->enableSpamProtection()
    ->fields()->fieldByName('TurnstileCaptchaField')
    ->setTitle("Spam protection")
    ->setDescription("Please tick the box to prove you're a human and help us stop spam.");

注释模块

当您使用silverstripe/comments模块时,您必须在您的_config.php中添加以下内容(按照他们的文档),以便在评论表单上使用Terraformers\TurnstileCaptcha。

CommentingController::add_extension('CommentSpamProtection');

渲染类型

默认情况下,turnstile小部件将自动渲染。要更改此设置,您可以设置渲染类型。

这可以通过Config API在站点范围内进行配置

Terraformers\TurnstileCaptcha\Forms\TurnstileCaptchaField:
    default_render_type: 'explicit'

或根据表单进行配置

$captchaField = $form->Fields()->fieldByName('TurnstileCaptchaField');
$captchaField->setRenderType('explicit');

使用此配置,您需要添加自己的javascript来渲染小部件。有关详细信息,请参阅cloudflare文档

报告问题

当您报告问题时,请确保您指定您使用的SilverStripe版本,例如3.1.3,3.2beta,master等。同时,请确保包含您收到的任何JavaScript或PHP错误,对于PHP错误,请确保包含完整的堆栈跟踪。同时,请包含您产生问题的方法。您可能还需要提供一些类以帮助重现问题。坚持问题,记住您看到的是问题而不是模块的维护者,因此可能需要很多问题才能找到解决方案或答案。