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() . 'count'; 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('test1','test2')); $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!