softark / yii2-mb-captcha
Yii2 多字节 CAPTCHA
Requires
- yiisoft/yii2: *
This package is auto-updated.
Last update: 2024-08-29 03:17:49 UTC
README
为 Yii 框架 2.0 开发的多字节 captcha 小部件。
描述
softark\mbcaptcha\Captcha 是 yii\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 扩展
使用方法
-
在您的项目
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" },
-
在您的视图中使用
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>', ]) ?>
-
在您的控制器中使用
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
的所有属性以及以下属性。带有 (*) 的项是您可能想要配置的基本选项。
-
template (*) @var string
排列 CAPTCHA 小部件的模板。默认为
'{image} {link} {input}'
。此属性从父级继承,并扩展以支持类型切换链接标签。在此模板中,令牌
{image}
、{link}
和{input}
将分别替换为实际的图像标签、类型切换链接标签和文本输入标签。请注意,
{link}
必须在 DOM 树中是{image}
的同级,否则切换链接将不起作用。如果您不想有类型切换链接标签,则可以省略
{link}
令牌。 -
toggleLinkLabel (*) @var string
类型切换链接的标签。默认为 "かな/abc" ("平假名/小写字母")。
当您使用非日语字符时,您可能想要更改此标签。
softark\mbcaptcha\CaptchaAction 属性
softark\mbcaptcha\CaptchaAction
支持 yii\captcha\CaptchaAction
的所有属性以及以下附加属性。带有 (*) 的项是您可能想要配置的基本选项。
-
mbFontFile (*) @var string
用于多字节字符的字体。默认为
seto-mini.ttf
。请注意,**默认字体仅支持标准 ASCII 和日语平假名和片假名**。
如果您想渲染您选择的字符,您必须提供适当的字体文件。
-
seeds (*) @var string
用于生成随机单词的字符串。从该字符串中随机选择的几个字符将组成 captcha 单词。
默认为一系列日语平假名字符:"あいうえおかきくけこがぎぐげごさしすせそざじずぜぞたちつてとだぢづでどなにぬねのはひふへほはひふへほはひふへほばびぶべぼぱぴぷぺぽまみむめもやゆよらりるれろわをん"。
您可以设置自己的。请确保您的
mbFontFile
可以渲染seeds
中的所有字符。 -
mbMinLength @var integer
随机生成的多字节字符单词的最小长度。默认为 5
-
mbMaxLength @var integer
随机生成多字节字符词的最大长度。默认为5。
-
mbOffset @var 整数
字符间的偏移量。默认为2。您可以通过调整此属性来降低或提高多字节字符验证码的可读性。
-
fixedAngle @var 布尔值
是否以固定角度渲染多字节字符验证码图像。默认为false。如果您在渲染字体时遇到困难,可以将其设置为true。
如何自定义
以下是一个示例代码,展示了如何自定义 softark\mbcaptcha\Captcha
和 softark\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 的子集。