Делаем цифровую капчу в Yii2

       Yii2      yii2    captcha      775    

Из коробки в Yii2 используется капча из букв английского алфавита. Выглядит она вот так:

капча из букв английского алфавита

Но, вместо этого мы будем использовать цифровую капчу, которая безусловно будет удобней для ваших пользователей. Выглядеть она будет так:

цифровая капча

Для этого переопределим метод generateVerifyCode() класса CaptchaAction. Именно этот метод отвечает за то, из каких символов будет состоять капча в Yii2.

Я использую Yii2 advanced application (расширенный шаблон приложения)

Создадим файл NumericCaptcha.php в frontend\components. Код файла будет следующим:

<?php
namespace frontend\components;
use yii\captcha\CaptchaAction as DefaultCaptchaAction;

class NumericCaptcha extends DefaultCaptchaAction
{
  protected function generateVerifyCode()
  {
    //Длина
    $length = 5;
    //Цифры, которые используются при генерации
    $digits = '0123456789';
    $code = '';
    for($i = 0; $i < $length; $i++) {
        $code .= $digits[mt_rand(0, 9)];
    }
    return $code;
  }
}

Теперь, нужно прописать пусть до новой капчи в контроллере:

<?php
namespace frontend\controllers;
use yii\web\Controller;
use frontend\components\NumericCaptcha;

class SiteController extends Controller
{ 
  public function actions()
  {
    return [            
      'captcha' => [
        'class' => NumericCaptcha::className(),
        'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
      ],
    ];
  }    
}

Теперь, при генерации будут использоваться цифры.

Комментарии временно оключены

Поиск

Популярное