Maison >cadre php >YII >Comment définir le style du code de vérification yii2

Comment définir le style du code de vérification yii2

angryTom
angryTomoriginal
2020-02-17 17:57:082812parcourir

Comment définir le style du code de vérification yii2

Comment définir le style du code de vérification yii2

La première étape, contrôleur :

in Réécrivez la méthode

public function actions()
{        return [
        'captcha' => [
            'class' => 'yii\captcha\CaptchaAction',
            'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
            'backColor' => 0x000000,//背景颜色
            'maxLength' => 6, //最大显示个数
            'minLength' => 5,//最少显示个数
            'padding' => 5,//间距
            'height' => 40,//高度
            'width' => 130,  //宽度
            'foreColor' => 0xffffff,     //字体颜色
            'offset' => 4,        //设置字符偏移量 有效果
        ],       ]; 
}

dans n'importe quel contrôleur La deuxième étape est le modèle de formulaire :

Seule la partie liée au code de vérification est donnée ici.

Articles et tutoriels connexes recommandés : tutoriel yii

class ContactForm extends Model{    
    public $verifyCode;    
    public function rules(){        
            return [
                ['verifyCode', 'required'],
                ['verifyCode', 'captcha'],
          ];
    }
}

Le validateur du code de vérification dans la règle de vérification est captcha.

La troisième étape, vue :

Utilisez ActiveForm pour générer les champs correspondants.

captchaActionLe paramètre spécifie où la première étape est écrite. La valeur par défaut est à l'intérieur de site.

 <?= $form->field($model, &#39;verifyCode&#39;)->widget(Captcha::className(), [
    &#39;template&#39; => &#39;<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>&#39;,
 ]) ?>

Code de vérification, tout le processus de génération et de vérification est terminé.

Ce qui précède est le processus de génération d'un code de vérification, car les numéros du code de vérification sont codés en dur dans le code. Que devons-nous faire si nous avons besoin de numéros ?

C'est facile à faire. Nous pouvons écrire nous-mêmes une classe pour hériter de CaptchaAction et remplacer la méthode generateVerifyCode. Exemple :

namespace yii\captcha;
class   Newcaptcha extends CaptchaAction
{
    protected function generateVerifyCode()
    {
        if ($this->minLength > $this->maxLength) {
            $this->maxLength = $this->minLength;
        }
        if ($this->minLength < 3) {
            $this->minLength = 3;
        }
        if ($this->maxLength > 20) {
            $this->maxLength = 20;
        }
        $length = mt_rand($this->minLength, $this->maxLength);

        $letters = &#39;1234567890123456789012&#39;;
        $vowels = &#39;aeiou&#39;;
        $code = &#39;&#39;;
        for ($i = 0; $i < $length; ++$i) {
            if ($i % 2 && mt_rand(0, 10) > 2 || !($i % 2) && mt_rand(0, 10) > 9) {
                $code .= $vowels[mt_rand(0, 4)];
            } else {
                $code .= $letters[mt_rand(0, 20)];
            }
        }
        return $code;
    }
}

Le fichier de classe est généré avec succès.
Ensuite, changez la configuration du contrôleur

&#39;captcha&#39; => [
    &#39;class&#39; => &#39;yii\captcha\Newcaptcha&#39;,
    &#39;maxLength&#39; => 5,
    &#39;minLength&#39; =>5
],

D'accord, le changement est terminé, jetons un œil à l'effet !

Plus pour Pour plus de connaissances sur le framework Yii, vous pouvez regarder les cours d'apprentissage en programmation associés ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn