matt-west/craft-recaptcha

将Google的reCAPTCHA集成到您的表单中。

安装次数: 54,283

依赖项: 1

建议者: 0

安全: 0

星标: 18

关注者: 3

分支: 17

公开问题: 3

类型:craft-plugin

3.0.0 2024-07-12 15:27 UTC

This package is auto-updated.

Last update: 2024-09-12 15:59:17 UTC


README

将Google的reCAPTCHA集成到您的表单中。包括对CraftCMS 联系表单插件的兼容性。

要求

此插件需要Craft CMS 5或更高版本。

此插件仅支持reCAPTCHA v2。

安装

要安装此插件,请按照以下说明操作。

  1. 打开您的终端并转到您的Craft项目目录

     cd /path/to/project
    
  2. 然后让Composer加载插件

     composer require matt-west/craft-recaptcha
    
  3. 在控制面板中,转到设置→插件,并单击Craft reCAPTCHA的“安装”按钮。

配置Craft reCAPTCHA

  1. 注册reCAPTCHA API密钥.
  2. 打开Craft管理员并转到设置→插件→Craft reCAPTCHA→设置。
  3. 添加您的site keysecret key,然后保存。
  4. 将reCAPTCHA模板标签添加到您的表单中。(请参阅下一部分)

如果您正在使用CraftCMS 联系表单插件,则一切设置已为您完成。

验证reCAPTCHA

要验证reCAPTCHA是否有效,请将来自g-recaptcha-response参数的reCAPTCHA响应传递到CraftRecaptcha::$plugin->craftRecaptchaServiceverify()方法。

// Get the reCAPTCHA response code to validate.
$captcha = Craft::$app->getRequest()->getParam('g-recaptcha-response');

// Pass the response code to the verification service.
$validates = CraftRecaptcha::$plugin->craftRecaptchaService->verify($captcha);

if ($validates) {
  // All good! the reCAPTCHA is valid.
} else {
  // The reCAPTCHA is invalid.
}

或者,您也可以使用内置的验证控制器操作在转发到目标操作之前验证请求。

例如,以下字段将验证reCAPTCHA并将请求传递到登录控制器操作

<input type="hidden" name="action" value="recaptcha/recaptcha/verify-submission">
<input type="hidden" name="verified-action" value="users/login">
{{ craft.recaptcha.render() }}

action字段设置为recaptcha/recaptcha/verify-submission,并将verified-action字段设置为要触发的目标控制器操作。这将转发所有其他字段和参数到目标控制器操作。

自动化测试和reCAPTCHA

如果您需要对表单运行自动化测试,请使用以下密钥。使用这些凭据进行验证的请求将始终通过。

站点密钥:6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI 秘密密钥:6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

文档

使用Craft reCAPTCHA

将以下标签添加到您希望显示reCAPTCHA的地方的表单中。

{{ craft.recaptcha.render() }}

渲染参数(请参阅文档)可注入到render()函数中,例如。

{{ craft.recaptcha.render({
  theme: 'dark',
  size: 'compact'
}) }}

您还可以使用sitekey模板变量自己创建reCAPTCHA元素。这对于实现不可见reCAPTCHA特别有用。

<div class="g-recaptcha"
      data-sitekey="{{ craft.recaptcha.sitekey }}"
      data-callback="onSubmit"
      data-size="invisible">
</div>

Matt West提供