matt-west / craft-recaptcha
将Google的reCAPTCHA集成到您的表单中。
Requires
- craftcms/cms: ^4.0.3|^5.0.0
- guzzlehttp/guzzle: ^6.3 || ^7.2
README
将Google的reCAPTCHA集成到您的表单中。包括对CraftCMS 联系表单插件的兼容性。
要求
此插件需要Craft CMS 5或更高版本。
此插件仅支持reCAPTCHA v2。
安装
要安装此插件,请按照以下说明操作。
-
打开您的终端并转到您的Craft项目目录
cd /path/to/project
-
然后让Composer加载插件
composer require matt-west/craft-recaptcha
-
在控制面板中,转到设置→插件,并单击Craft reCAPTCHA的“安装”按钮。
配置Craft reCAPTCHA
- 注册reCAPTCHA API密钥.
- 打开Craft管理员并转到设置→插件→Craft reCAPTCHA→设置。
- 添加您的
site key
和secret key
,然后保存。 - 将reCAPTCHA模板标签添加到您的表单中。(请参阅下一部分)
如果您正在使用CraftCMS 联系表单插件,则一切设置已为您完成。
验证reCAPTCHA
要验证reCAPTCHA是否有效,请将来自g-recaptcha-response
参数的reCAPTCHA响应传递到CraftRecaptcha::$plugin->craftRecaptchaService
的verify()
方法。
// 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提供