Maison > cadre php > YII > le corps du texte

yii génère une erreur lors de la saisie du code de vérification correct

王林
Libérer: 2019-12-24 13:44:52
original
1603 Les gens l'ont consulté

yii génère une erreur lors de la saisie du code de vérification correct

Lorsque j'ai fait une demande, j'ai constaté que j'avais entré le bon code de vérification, mais il m'a été demandé que le code de vérification était erroné.

La dernière trace du code a révélé que si le modèle est validé séparément avant l'enregistrement, le code de vérification sera régénéré une fois la vérification terminée. Ensuite, lorsque nous Model save, nous effectuerons également une vérification de validation. Lors de la vérification, le code de vérification a été régénéré, il ne correspondra donc pas.

Découverte du problème :

Nous pouvons chercher framework/web/widgets/captcha/CCaptchaAction.php pour trouver facilement le problème.

<?php
class CaptchaAction extends CCaptchaAction{
    public function validate($input, $caseSensitive)
    {
        $code = $this->getVerifyCode();
        $valid = $caseSensitive ? ($input === $code) : !strcasecmp($input, $code);
        $session = Yii::app()->session;
        $session->open();
        $name = $this->getSessionKey() . &#39;count&#39;;        
        if (!Yii::app()->request->isAjaxRequest) {
            $session[$name] = $session[$name] + 1;
        }        
        // 这里会重新生成
        if ($session[$name] > $this->testLimit && $this->testLimit > 0) {
                    $this->getVerifyCode(true);
        }
                return $valid;
    }
}
Copier après la connexion
// 如果这里用到了验证码,就会出问题$model = new Test();

$model->validate();

$model->save();
Copier après la connexion
// 这样是正确的$model = new  Test();
// 把需要验证的 attribute 放进去,排除验证码字段
$model->validate(array(&#39;test1&#39;,&#39;test2&#39;));
$model->save()
Copier après la connexion

Articles et tutoriels connexes recommandés : tutoriel yii

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