gregwar/captcha-bundle

验证码包

安装次数: 3,694,339

依赖: 28

建议者: 0

安全: 0

星星: 344

观察者: 16

分支: 127

公开问题: 63

类型:symfony-bundle

v2.3.0 2024-06-06 13:14 UTC

README

paypal

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

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

与 Symfony 的兼容性

安装

步骤 1:下载 GregwarCaptchaBundle

使用 composer require 下载并安装包。安装完成后,由于 Symfony 脚本的存在,包将自动注册。

    composer require gregwar/captcha-bundle

如果您不使用 flex,请手动注册

<?php
// config/bundles.php
return [
    // ...
    Gregwar\CaptchaBundle\GregwarCaptchaBundle::class => ['all' => true]
];

配置

如果您需要自定义全局包配置,可以创建一个 /config/packages/gregwar_captcha.yaml 文件,并添加您的配置

gregwar_captcha:
  width: 160
  height: 50

使用方法

您可以通过以下方式在表单中使用 "captcha" 类型

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

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

选项

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

  • image_folder:如果将 as_file 设置为 true,则相对于公共 web 文件夹的验证码图像文件夹名称(默认="captcha")
  • web_path:公共 web 文件夹的绝对路径(默认='%kernel.project_dir%/public')
  • 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:提交不匹配代码时显示的错误消息(默认="Bad code value",有关更多信息,请参阅翻译部分)
  • bypass_code:始终验证验证码的代码(默认=null)
  • whitelist_key:用于在 as_url 的情况下保存会话密钥以用于验证码存储的会话密钥(默认=captcha_whitelist_key)
  • reload:添加用于重新加载代码的链接
  • humanity:用户在正确验证后可以提交的额外表单数(如果设置为不同的值,则只有 1/(1+humanity) 个表单将包含验证码,默认=0,即每个表单都将包含验证码)
  • 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:设置背景图像时推荐使用,将禁用所有图像效果。
  • session_key,如果您想在同一页面上托管多个验证码,您可能需要不同的会话键以确保正确存储不同表单的清晰短语

示例

<?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生成验证码图像,您必须将包的路由配置添加到您的config/routes.yaml文件中

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 %}
{% spaceless %}
    <img src="{{ captcha_code }}" title="captcha" width="{{ captcha_width }}" height="{{ captcha_height }}" />
    {{ form_widget(form) }}
{% endspaceless %}
{% endblock %}

图像创建

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

使用内部质量工具

vendor/bin/phpstan analyse
vendor/bin/ecs check .

许可证

此包受MIT许可证的约束。请参阅包中的完整许可证:LICENSE