softark/yii2-mb-captcha

Yii2 多字节 CAPTCHA

安装: 740

依赖: 0

建议者: 0

安全: 0

星星: 3

关注者: 3

分支: 2

公开问题: 0

类型:yii2-extension

1.1.0 2015-03-22 17:32 UTC

This package is auto-updated.

Last update: 2024-08-29 03:17:49 UTC


README

为 Yii 框架 2.0 开发的多字节 captcha 小部件。

Multibyte Captcha in Action

Multibyte Captcha using Chinese characters

日语 README

描述

softark\mbcaptcha\Captchayii\captcha\Captcha 的扩展。

虽然 yii\captcha\Captcha 只使用 英文字母 来生成 CAPTCHA 图像,但 softark\mbcaptcha\Captcha 可以使用 多字节字符 ... 默认情况下是平假名,但你可以通过提供适当的字体来使用任何多字节字符。

可选地,softark\mbcaptcha\Captcha 可以在 CAPTCHA 图像旁边生成一个链接,这样你就可以在多字节字符和英文字母之间切换 CAPTCHA 类型,反之亦然。

softark\mbcaptcha\Captcha 必须与 softark\mbcaptcha\CaptchaAction 一起使用以提供其功能。

要求

  • Yii 版本 2.0.44 或更高
  • PHP GD + FreeType 扩展或 ImageMagick 扩展

使用方法

  1. 在您的项目 composer.json 中添加 softark/yii2-mb-captcha,并让 Composer 配置您的项目。

    "require": {
        "php": ">=5.4.0",
        "yiisoft/yii2": "~2.0.44",
        "yiisoft/yii2-bootstrap": "*",
        "yiisoft/yii2-swiftmailer": "*",
        "softark/yii2-mb-captcha": "dev-master"
    },
  2. 在您的视图中使用 softark\mbcaptcha\Captcha 替代 yii\captcha\Captcha

    /* use yii\captcha\Captcha; */
    use softark\mbcaptcha\Captcha;
    ...
    <?=
        $form->field($model, 'verifyCode')->widget(Captcha::className(), [
            'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>',
        ]) ?>

    可选地,您可能希望在模板中包含 {link} 令牌。

    /* use yii\captcha\Captcha; */
    use softark\mbcaptcha\Captcha;
    <?=
        $form->field($model, 'verifyCode')->widget(Captcha::className(), [
            'template' => '<div class="row"><div class="col-lg-3">{image} {link}</div><div class="col-lg-6">{input}</div></div>',
        ]) ?>
  3. 在您的控制器中使用 softark\mbcaptcha\CaptchaAction 替代 yii\captcha\CaptchaAction

    public function actions()
    {
        return [
            'captcha' => [
                /* 'class' => 'yii\captcha\CaptchaAction', */
                'class' => 'softark\mbcaptcha\CaptchaAction',
                'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
            ],
            ...
        ];
    }

softark\mbcaptcha\Captcha 属性

softark\mbcaptcha\Captcha 支持 yii\captcha\Captcha 的所有属性以及以下属性。带有 (*) 的项是您可能想要配置的基本选项。

  1. template (*) @var string

    排列 CAPTCHA 小部件的模板。默认为 '{image} {link} {input}'

    此属性从父级继承,并扩展以支持类型切换链接标签。在此模板中,令牌 {image}{link}{input} 将分别替换为实际的图像标签、类型切换链接标签和文本输入标签。

    请注意,{link} 必须在 DOM 树中是 {image} 的同级,否则切换链接将不起作用。

    如果您不想有类型切换链接标签,则可以省略 {link} 令牌。

  2. toggleLinkLabel (*) @var string

    类型切换链接的标签。默认为 "かな/abc" ("平假名/小写字母")。

    当您使用非日语字符时,您可能想要更改此标签。

softark\mbcaptcha\CaptchaAction 属性

softark\mbcaptcha\CaptchaAction 支持 yii\captcha\CaptchaAction 的所有属性以及以下附加属性。带有 (*) 的项是您可能想要配置的基本选项。

  1. mbFontFile (*) @var string

    用于多字节字符的字体。默认为 seto-mini.ttf

    请注意,**默认字体仅支持标准 ASCII 和日语平假名和片假名**。

    如果您想渲染您选择的字符,您必须提供适当的字体文件。

  2. seeds (*) @var string

    用于生成随机单词的字符串。从该字符串中随机选择的几个字符将组成 captcha 单词。

    默认为一系列日语平假名字符:"あいうえおかきくけこがぎぐげごさしすせそざじずぜぞたちつてとだぢづでどなにぬねのはひふへほはひふへほはひふへほばびぶべぼぱぴぷぺぽまみむめもやゆよらりるれろわをん"。

    您可以设置自己的。请确保您的 mbFontFile 可以渲染 seeds 中的所有字符。

  3. mbMinLength @var integer

    随机生成的多字节字符单词的最小长度。默认为 5

  4. mbMaxLength @var integer

    随机生成多字节字符词的最大长度。默认为5。

  5. mbOffset @var 整数

    字符间的偏移量。默认为2。您可以通过调整此属性来降低或提高多字节字符验证码的可读性。

  6. fixedAngle @var 布尔值

    是否以固定角度渲染多字节字符验证码图像。默认为false。如果您在渲染字体时遇到困难,可以将其设置为true。

如何自定义

以下是一个示例代码,展示了如何自定义 softark\mbcaptcha\Captchasoftark\mbcaptcha\CaptchaAction。它展示了用于验证码的中文字符。

在视图脚本中

use softark\mbcaptcha\Captcha;
...
<?=
    $form->field($model, 'verifyCode')->widget(Captcha::className(), [
        'template' => '<div class="row"><div class="col-lg-3">{image} {link}</div><div class="col-lg-6">{input}</div></div>',
        'toggleLinkLabel' => '漢字/abc',
    ]) ?>

以及在控制器中

public function actions()
{
    return [
        'captcha' => [
            'class' => 'softark\mbcaptcha\CaptchaAction',
            'seeds' => '几乎所有的应用程序都是建立在数据库之上虽然可以非常灵活的' .
                '操作数据库但有些时候一些设计的选择可以使它更便于使用首先应用程序' .
                '广泛使用了设计的考虑主要围绕优化使用而不是组成复杂语句实际上大多' .
                '的设计是使用友好的模式来解决实践中的问题最常用的方式是创建易于被' .
                '人阅读和理解的代码例如使用命名来传达意思但是这很难做到',
            'mbFontFile' => '@frontend/fonts/gbsn00lp.ttf',
        ],
        ...
    ];
}

请注意,示例代码假设您已将所选字体文件放置在前端应用程序目录的 'fonts' 子目录中。

您必须小心,不要在 seeds 中包含您的字体不支持的字符。

历史

  • 版本 1.0.0 (2014-11-15)
    • 在 Yii 2.0.0 上进行测试
    • 采用了核心的代码风格(缩进为空格)
  • 版本 0.9.0 (2014-04-22)
    • 针对 Yii 2.0 beta 的更新
  • 版本 0.8.0 (2014-02-08)
    • 首次发布
    • JCaptcha 1.0.3移植,该版本是为 Yii 1.1.x 定制的。
    • 在 Yii 2.0 alpha 下开发

致谢

非常感谢 setofont.ttf 的作者。默认字体 "seto-mini.ttf" 是 setofont.ttf 的子集。