Heim >PHP-Framework >YII >yii meldet bei der Eingabe des richtigen Bestätigungscodes einen Fehler

yii meldet bei der Eingabe des richtigen Bestätigungscodes einen Fehler

王林
王林Original
2019-12-24 13:43:471660Durchsuche

yii meldet bei der Eingabe des richtigen Bestätigungscodes einen Fehler

Als ich eine Anfrage stellte, stellte ich fest, dass ich den richtigen Bestätigungscode eingegeben hatte, es wurde jedoch angezeigt, dass der Bestätigungscode falsch sei.

Die letzte Spur des Codes ergab, dass der Bestätigungscode nach Abschluss der Überprüfung neu generiert wird, wenn das Modell vor dem Speichern separat validiert wird. Wenn wir dann Model save, führen wir auch eine Validierungsüberprüfung durch. Während der Überprüfung wurde der Bestätigungscode neu generiert, sodass er nicht übereinstimmt.

Problemerkennung:

Wir können nach framework/web/widgets/captcha/CCaptchaAction.php suchen, um das Problem leicht zu finden.

<?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;
    }
}
// 如果这里用到了验证码,就会出问题$model = new Test();

$model->validate();

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

Empfohlene verwandte Artikel und Tutorials: yii-Tutorial

Das obige ist der detaillierte Inhalt vonyii meldet bei der Eingabe des richtigen Bestätigungscodes einen Fehler. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn