lubosdz / yii2-captcha-extended
Extended captcha code generator for Yii2 framework with configurable obfuscation level
Installs: 9 851
Dependents: 0
Suggesters: 0
Security: 0
Stars: 9
Watchers: 3
Forks: 1
Open Issues: 0
Type:yii2-extension
Requires
- php: >=7.0
- yiisoft/yii2: 2.0.*
README
Yii2 Captcha Extended is an extension written for Yii2 framework. It enhances original captcha code delivered along with the framework - see DEMO. Version for Yii 1.x is available at Yii Framework Extensions.
Features
- supports modes: default, math, mathverbal, words, logical
- supports extended characters latin1, latin2 (utf-8) including middle- east- european and cyrillyc characters
- adds visual obfuscation elements: dots density, through lines, fillSections, random text & background color
- mode-dependent options: randomUpperLowerCase (default mode), resultMultiplier (math mode)
INSTALLATION
- Install via composer:
$ composer require "lubosdz/yii2-captcha-extended" : "~1.0.0"
or you can include the following in your composer.json file:
{ "require": { "lubosdz/yii2-captcha-extended" : "~1.0.0" } }
- Define action in controller, e.g.
SiteController
:
public function actions() { return [ 'captcha' => [ 'class' => 'lubosdz\captchaExtended\CaptchaExtendedAction', // optionally, set mode and obfuscation properties e.g.: 'mode' => 'math', //'mode' => CaptchaExtendedAction::MODE_MATH, //'resultMultiplier' => 5, //'lines' => 5, //'density' => 10, //'height' => 50, //'width' => 150, ], ]; }
- Define client validation in
LoginForm::rules()
:
public $verifyCode; public function rules() { return [ ['verifyCode', 'lubosdz\captchaExtended\CaptchaExtendedValidator', 'captchaAction' => Url::to('/site/captcha'), ], ]; }
- In view defined captcha field inside login form e.g.:
<?php $form = ActiveForm::begin() ?> // ... <?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [ 'captchaAction' => Url::to('/site/captcha'), 'template' => '<div class="text-center">{image}</div><br/> {input} ', 'imageOptions' => [ 'class' => 'img-fluid', 'style' => 'cursor:pointer; width: 100%', 'title' => Yii::t('app', 'Click to refresh the code'), ], 'options' => [ 'placeholder' => Yii::t('app', 'Verification code'), 'class' => 'form-control', ], ])->label(false) ?> // ... <?php ActiveForm::end(); ?>
-
If needed, collect localized strings via CLI command
yiic message messages/config.php
and translate captcha related strings. -
Since by default capchta configures to default framework's settings, you may want to adjust some options:
mode
- default|math|mathverbal|logical|words,- for the
words
mode, you can replace your own file [words.txt] or [words.yourlanguage.txt]
- for the
density
- dots density [0-100],lines
- the number of through lines [0-20],fillSections
- the number of fillSections [0-20],letters
- define your own first characters set (UTF-8 supported)vowels
- define your own second characters set (UTF-8 supported)resultMultiplier
- applied to math mode to increase formula difficultyfileWords
- abs. path to file with your own defined locale words (UTF-8 supported)randomUpperLowerCase
- mix up randomly upper & lower characters from characters setsparamRefreshUrl
- set your own URL refresh param, defaults tov
- also note standard properties supported by framework:
width
,height
,padding
,offset
,foreColor
,backColor
,transparent
,minLength
,maxLength
, ..
-
Enjoy! :-)
Changelog
Version 1.0.5 - Nov 7, 2023
- PHP 8.2+ compatability
- enable unicode in REGEX by default (/u modifier)
Version 1.0.4 - Jun 30, 2021
- updated SK, CS words (dropped accented characters)
Version 1.0.3 - Jun 07, 2020
- minor compatability fix for PHP 7.4+
Version 1.0.2 - Feb 25, 2020
- configurable refresh parameter in URL
- updated docs
Version 1.0.1 - May 21, 2018
- added CS (Czech) words file
- center formula horizontaly
- updated documentation
Version 1.0.0 - March 28, 2018
- rework of previous extension for Yii 1.x branch
- added new options - custom character sets, resultMultiplier, randomUpperLowerCase, Imagick support
- couple of potential bugfixes e.g. calculating pixel color ranges
- full multibyte (MB) support
- added support for installation via composer