prefeituravitoria/captcha-bundle

验证码包

安装: 439

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 127

类型:captcha-bundle

v2.0.5 2018-02-23 21:08 UTC

This package is not auto-updated.

Last update: 2024-09-13 19:00:58 UTC


README

paypal

GregwarCaptchaBundle 为 Symfony 表单组件添加了验证码表单类型支持。

它使用 gregwar/captcha 作为验证码生成器,这是一个独立的库,也可用于非 Symfony 项目。

Symfony 兼容性

如果你使用的是 Symfony < 2.8,你应该使用版本 1.*

如果你使用的是 SYmfony >= 2.8,你应该使用版本 2.*

安装

步骤 1: 下载 GregwarCaptchaBundle

最终,GregwarCaptchaBundle 文件应下载到 'vendor/bundles/Gregwar/CaptchaBundle' 目录。

你可以根据自己的喜好选择几种方法。第一种方法是标准的 Symfony 方法。

使用 Composer

使用 composer require 下载并安装包。

    composer require gregwar/captcha-bundle

使用 vendors 脚本

将以下行添加到你的 deps 文件中

    [GregwarCaptchaBundle]
        git=http://github.com/Gregwar/CaptchaBundle.git
        target=/bundles/Gregwar/CaptchaBundle
        version=origin/2.0 <- add this if you are using Symfony 2.0

现在,运行 vendors 脚本来下载包

$ php bin/vendors install

使用子模块

如果你更喜欢使用 git 子模块,请运行以下命令

$ git submodule add git://github.com/Gregwar/CaptchaBundle.git vendor/bundles/Gregwar/CaptchaBundle
$ git submodule update --init

步骤 2: 配置自动加载器

如果你使用 composer,可以跳过此步骤。

现在你需要在自动加载器中添加 Gregwar 命名空间

<?php
// app/autoload.php

$loader->registerNamespaces(array(
    // ...
    'Gregwar' => __DIR__.'/../vendor/bundles',
));

步骤 3: 启用包

最后,在内核中启用该包

<?php
// app/appKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Gregwar\CaptchaBundle\GregwarCaptchaBundle(),
    );
}

配置

将以下配置添加到你的 app/config/config.yml

gregwar_captcha: ~

用法

你可以这样在你的表单中使用 "captcha" 类型

<?php
    use Gregwar\CaptchaBundle\Type\CaptchaType;
    // ...
    $builder->add('captcha', CaptchaType::class); // That's all !
    // If you're using php<5.5, you can use instead:
    $builder->add('captcha', 'Gregwar\CaptchaBundle\Type\CaptchaType');
    // ...

请注意,生成的图像默认会嵌入到 HTML 文档中,以避免处理路由和子请求。

选项

你可以定义以下全局配置选项

  • image_folder:如果将 as_file 设置为 true,则为验证码图像文件夹相对于公共 web 文件夹的名称(默认="captcha")
  • web_path:公共 web 文件夹的绝对路径(默认="%kernel.root_dir%/../web")
  • gc_freq:垃圾回收的频率,以 1 的分数表示(默认=100)
  • expiration:验证码图像文件的最大生存时间(分钟),默认=60

你可以在全局或 CaptchaType 本身上定义以下配置选项

  • width:验证码图像的宽度(默认=120)
  • height:验证码图像的高度(默认=40)
  • disabled:全局禁用验证码(在开发环境中可能很有用),它仍然会出现,但不可编辑且不会检查
  • length:验证码的长度(字符数,默认 5)
  • quality:验证码的 jpeg 质量(默认=30)
  • charset:用于代码生成的字符集(默认=abcdefhjkmnprstuvwxyz23456789)
  • font:要使用的字体(默认是预提供字体中的随机选择),这应该是一个绝对路径
  • keep_value:直到表单提交,值都相同,即使页面刷新(默认=true)
  • as_file:如果设置为 true,则创建图像文件而不是嵌入,以满足 IE6/7 的要求(默认=false)
  • as_url:如果设置为 true,则使用 URL 在图像标签中,并处理验证码生成。这可以在多服务器环境中使用,并支持 IE6/7(默认=false)
  • invalid_message:提交不匹配的代码时显示的错误消息(默认="无效的代码值",请参见翻译部分获取更多信息)
  • bypass_code:始终验证验证码的代码(默认=null)
  • whitelist_key:用于存储验证码的会话密钥,当使用as_url时(默认=captcha_whitelist_key)
  • reload:添加一个重新加载代码的链接
  • humanity:用户在正确验证后可以提交的额外表单数量,如果设置为非0值,则只有(1+humanity)个表单中包含CAPTCHA(默认=0,即每个表单都包含CAPTCHA)
  • distortion:启用或禁用图像上的扭曲(默认=true,启用)
  • max_front_linesmax_behind_lines:在图像顶部/底部绘制的最大行数。0将不绘制任何线条;null将使用默认算法(线条数量取决于图像大小)。(默认=null)
  • background_color:设置背景颜色,如果要强制设置,则应为r、g & b的数组,例如[255, 255, 255]将强制背景为白色
  • background_images:将自定义用户定义的图像设置为验证码背景(随机选择1个图像)。建议关闭图像上的所有效果(ignore_all_effects)。必须传递图像的完整路径。
  • interpolation:启用或禁用在验证码上的插值
  • ignore_all_effects:建议在设置背景图像时使用,将禁用所有图像效果。

示例

<?php
    use Gregwar\CaptchaBundle\Type\CaptchaType;
    // ...
    $builder->add('captcha', CaptchaType::class, array(
        'width' => 200,
        'height' => 50,
        'length' => 6,
    ));

您还可以通过在您的config.yml文件中使用gregwar_captcha配置条目来为整个应用程序设置这些选项

gregwar_captcha:
    width: 200
    height: 50
    length: 6

翻译

消息使用翻译器,您可以选择更改invalid_message选项或对其进行翻译。欢迎对任何语言的贡献!

作为URL

要使用URL生成验证码图像,您必须将捆绑的路线配置添加到您的app/routing.yml文件中

gregwar_captcha_routing:
    resource: "@GregwarCaptchaBundle/Resources/config/routing/routing.yml"

这将使用"/generate-captcha/{key}"的捆绑路由来处理生成。如果此路由与应用程序路由冲突,则可以在导入时为捆绑路由添加前缀

gregwar_captcha_routing:
    resource: "@GregwarCaptchaBundle/Resources/config/routing/routing.yml"
    prefix: /_gcb

由于会话密钥在URL中传输,因此出于安全原因,它也被添加到另一个会话数组中,键为whitelist_key

表单主题

小部件支持标准的Symfony主题,有关如何实现的详细信息,请参阅文档

默认渲染

{%- block captcha_widget -%}
    <img src="{{ captcha_code }}" title="captcha" width="{{ captcha_width }}" height="{{ captcha_height }}" />
    {{ form_widget(form) }}
{%- endblock -%}

图像创建

如果您选择使用图像文件而不是嵌入小部件,则小部件将随机执行垃圾收集并删除超出配置寿命的图像。

许可证

此捆绑包位于MIT许可证下。请参阅捆绑包中的完整许可证:LICENSE