silverstripe / spamprotection
为 SilverStripe 提供的垃圾邮件防护模块。
Requires
- php: ^8.1
- silverstripe/framework: ^5
Requires (Dev)
- 5.x-dev
- 4.x-dev
- 4.2.x-dev
- 4.2.1
- 4.2.0
- 4.2.0-rc1
- 4.2.0-beta1
- 4.1.x-dev
- 4.1.1
- 4.1.0
- 4.1.0-beta1
- 4.0.x-dev
- 4.0.2
- 4.0.1
- 4.0.0
- 4.0.0-rc1
- 4.0.0-beta1
- 3.x-dev
- 3.4.x-dev
- 3.4.3
- 3.4.2
- 3.4.1
- 3.4.0
- 3.4.0-rc1
- 3.4.0-beta1
- 3.3.x-dev
- 3.3.0
- 3.3.0-rc1
- 3.3.0-beta1
- 3.2.x-dev
- 3.2.1
- 3.2.0
- 3.2.0-rc1
- 3.2.0-beta1
- 3.1.x-dev
- 3.1.1
- 3.1.0
- 3.1.0-rc1
- 3.1.0-beta1
- 3.0.x-dev
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 3.0.0-beta1
- 2.0.x-dev
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.2.0
- dev-master
This package is auto-updated.
Last update: 2024-09-18 03:32:59 UTC
README
安装
composer require silverstripe/spamprotection
维护者联系方式
-
Saophalkun Ponlu <phalkunz (at) silverstripe (dot) com>
-
Will Rossiter <will (at) fullscreen (dot) io>
文档
本模块提供了一个通用的、一致的 API,用于将垃圾邮件防护添加到您的 Silverstripe 表单中。它本身不提供任何垃圾邮件防护功能。为此,您还必须下载一个垃圾邮件防护实现。目前可用的选项包括
- reCAPTCHA v2(两种实现:一种,另一种)
- MathSpamProtection
- Akismet
- Mollom
- Cloudflare Turnstile
作为开发者,您也可以通过创建一个实现 \SilverStripe\SpamProtection\SpamProtector
接口的类来提供自己的保护器。更多内容请见下文。
配置
安装此模块和您选择的保护器(例如 mollom)后,您需要通过 dev/build
重建数据库,并通过 SilverStripe 的配置系统设置默认保护器。这将更新任何带有垃圾邮件保护钩子的表单实例。
mysite/_config/spamprotection.yml
--- name: mycustomspamprotection --- SilverStripe\SpamProtection\Extension\FormSpamProtectionExtension: default_spam_protector: MollomSpamProtector
要为表单实例添加垃圾邮件防护,请调用 enableSpamProtection
。
// your existing form code $form = new Form(/* .. */); $form->enableSpamProtection();
实际的垃圾邮件验证逻辑由每个 SpamProtector
实现控制,因为它们各自需要不同的客户端或服务器端实现。
选项
enableSpamProtection
接受一组可选的配置值。
$form->enableSpamProtection(array( 'protector' => MathSpamProtector::class, 'name' => 'Captcha' ));
可配置的选项包括
-
protector
:实现\SilverStripe\SpamProtection\SpamProtector
的类名字符串或类实例。默认值为SilverStripe\SpamProtection\Extension\FormSpamProtectionExtension.default_spam_protector
。 -
name
:Captcha 的表单字段名称参数。默认为Captcha
。 -
title
:Captcha 表单字段的标题。默认为''
。 -
insertBefore
:在之前插入垃圾邮件保护字段现有字段的名称 -
mapping
:将表单字段映射到标准化的字段名称列表的数组。传递给垃圾邮件保护器的标准化字段列表包括
title
body
contextUrl
contextTitle
authorName
authorMail
authorUrl
authorIp
authorId
定义自己的 SpamProtector
任何实现 \SilverStripe\SpamProtection\SpamProtector
和 getFormField()
方法的类都可以设置为垃圾邮件保护器。该 getFormField()
方法返回要插入到 Form
中的 FormField
。返回的 FormField
应负责验证过程。
<?php use CaptchaField; use SilverStripe\SpamProtection\SpamProtector; class CustomSpamProtector implements SpamProtector { public function getFormField($name = null, $title = null, $value = null) { // CaptchaField is an imagined class which has some functionality. // See silverstripe-mollom module for an example. return new CaptchaField($name, $title, $value); } }
与用户表单一起使用垃圾邮件防护
本模块提供了一个 EditableSpamProtectionField
包装器,您可以将其添加到您的 UserForm 实例中。安装此模块并运行 /dev/build
重建数据库后,您的表单构建器界面将有一个 垃圾邮件防护字段
的选项。所使用的垃圾邮件防护类型将基于您当前选择的 SpamProtector 实例。
带有垃圾邮件防护支持的代码发布
垃圾邮件防护很有用,但在某些情况下,我们可能不希望要求开发人员使用垃圾邮件防护。在这种情况下,模块可以提供以下模式
use SilverStripe\Forms\Form; use SilverStripe\SpamProtection\Extension\FormSpamProtectionExtension; $form = new Form(/* .. */); if ($form->hasExtension(FormSpamProtectionExtension::class)) { $form->enableSpamProtection(); }