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
Libérer: 2020-02-17 17:57:27
original
2832 Les gens l'ont consulté

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,        //设置字符偏移量 有效果
        ],       ]; 
}
Copier après la connexion

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'],
          ];
    }
}
Copier après la connexion

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;,
 ]) ?>
Copier après la connexion

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;
    }
}
Copier après la connexion

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
],
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal