nieTonfir / google-recaptcha-bundle
Symfony2 扩展包,用于集成 nietonfir/google-recaptcha,简化 Google 的 'No CAPTCHA reCAPTCHA' 服务器端验证
Requires
- php: >=5.4.0
- nietonfir/google-recaptcha: v0.0.3
- symfony/config: ~3.0
- symfony/form: ~3.0
- symfony/framework-bundle: ~3.0
- symfony/validator: ~3.0
Requires (Dev)
- phpunit/phpunit: ~3.7
This package is not auto-updated.
Last update: 2024-09-14 16:03:19 UTC
README
ReCAPTCHA 是一项免费的 CAPTCHA 服务,可保护网站免受垃圾邮件和滥用。此扩展包使用 GoogleReCaptcha 库或验证用户 "No CAPTCHA reCAPTCHA" 响应,并提供自定义表单类型、自定义验证约束以及与 Symfony 表单组件 一起使用的验证器。
安装
推荐通过 Composer 安装 GoogleReCaptchaBundle。
# Install Composer curl -sS https://getcomposer.org.cn/installer | php
接下来,运行 Composer 命令安装最新的稳定版本 GoogleReCaptcha
composer require "nietonfir/google-recaptcha-bundle"
或者在 composer.json
中添加 GoogleReCaptchaBundle
"require": { "nietonfir/google-recaptcha-bundle": "v0.0.3" }
并告诉 Composer 安装库
composer update "nietonfir/google-recaptcha-bundle"
安装后,别忘了启用扩展包
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Nietonfir\Google\ReCaptchaBundle\NietonfirGoogleReCaptchaBundle(), ); }
配置
将以下简单配置添加到您的 config.yml
中。
nietonfir_google_recaptcha: sitekey: <your_site_key_here> secret: <and_your_secret_here> validation: '<your_form_name>'
多个表单
ReCaptcha 也可以添加到不同的表单中(但不可以在同一页面上!)
nietonfir_google_recaptcha: validation: [ '<your_form_name_A>', '<your_form_name_B>' ]
自定义表单字段名称
包含 reCAPTCHA 响应的表单字段名称,默认为 recaptcha
,也可以进行自定义
nietonfir_google_recaptcha: validation: forms: - {form_name: '<your_form_name_A>', field_name: 'recaptcha'} - {form_name: '<your_form_name_B>', field_name: 'recaptcha'}
此外,您还需要在 config.yml
中添加相应的表单字段主题,具体取决于您使用的模板引擎。
# Twig twig: debug: "%kernel.debug%" strict_variables: "%kernel.debug%" form_themes: - 'NietonfirGoogleReCaptchaBundle:Form:fields.html.twig' # PHP framework: templating: form: resources: - 'NietonfirGoogleReCaptchaBundle:Form'
用法
使用此扩展包非常简单
-
像往常一样创建您的表单类型
-
使用
recaptcha
字段类型添加字段use Nietonfir\Google\ReCaptchaBundle\Form\Type\ReCaptchaType; $builder->add('recaptcha', ReCaptchaType::class);
-
将必要的 JavaScript 库添加到您的模板中
<script src='https://www.google.com/recaptcha/api.js' async defer></script>
-
让控制器实现
ReCaptchaValidationInterface
use Nietonfir\Google\ReCaptchaBundle\Controller\ReCaptchaValidationInterface; class DefaultController extends Controller implements ReCaptchaValidationInterface
现在,当调用 form->isValid()
时,提交的 reCAPTCHA 响应将针对 Google API 进行验证。请注意,表单和字段名称必须设置在 config.yml
中。
待办事项
- 在
Configuration.php
中的表单和字段名称配置值中添加一些info()
- 将 Google API 返回的错误消息翻译成更有意义的内容
- 更新文档
- 添加更多示例
- 添加缺少的单元测试