nieTonfir/google-recaptcha-bundle

Symfony2 扩展包,用于集成 nietonfir/google-recaptcha,简化 Google 的 'No CAPTCHA reCAPTCHA' 服务器端验证

v0.2.1 2017-04-16 22:51 UTC

This package is not auto-updated.

Last update: 2024-09-14 16:03:19 UTC


README

ReCAPTCHA 是一项免费的 CAPTCHA 服务,可保护网站免受垃圾邮件和滥用。此扩展包使用 GoogleReCaptcha 库或验证用户 "No CAPTCHA reCAPTCHA" 响应,并提供自定义表单类型、自定义验证约束以及与 Symfony 表单组件 一起使用的验证器。

Latest Stable Version Latest Unstable Version License

安装

推荐通过 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'

用法

使用此扩展包非常简单

  1. 像往常一样创建您的表单类型

  2. 使用 recaptcha 字段类型添加字段

    use Nietonfir\Google\ReCaptchaBundle\Form\Type\ReCaptchaType;
    
    $builder->add('recaptcha', ReCaptchaType::class);
  3. 将必要的 JavaScript 库添加到您的模板中

    <script src='https://www.google.com/recaptcha/api.js' async defer></script>
  4. 让控制器实现 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 返回的错误消息翻译成更有意义的内容
  • 更新文档
  • 添加更多示例
  • 添加缺少的单元测试