silverstripe-terraformers / turnstile-captcha
Silverstripe CMS Turnstile Captcha垃圾邮件保护字段
Requires
- php: ^8.1
- ext-intl: *
- silverstripe/framework: ^5.0
- silverstripe/spamprotection: ^4
Requires (Dev)
- phpunit/phpunit: ^9.5
README
使用Cloudflare的Turnstile CAPTCHA服务为SilverStripe用户表单添加“垃圾邮件保护”字段。
需求
- SilverStripe 5.x
- SilverStripe垃圾邮件保护 4.x
安装
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_key
和secret_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错误,请确保包含完整的堆栈跟踪。同时,请包含您产生问题的方法。您可能还需要提供一些类以帮助重现问题。坚持问题,记住您看到的是问题而不是模块的维护者,因此可能需要很多问题才能找到解决方案或答案。