Maison  >  Article  >  développement back-end  >  Comment résoudre le problème de Yii entrant le code de vérification correct mais la vérification échoue

Comment résoudre le problème de Yii entrant le code de vérification correct mais la vérification échoue

怪我咯
怪我咯original
2017-06-16 10:43:481377parcourir

Cet article vous présente principalement la solution au problème de Yii qui saisit le code de vérification correct mais la vérification échoue. L'article le présente en détail à travers l'exemple de code, qui a une certaine valeur de référence et d'apprentissage pour tous les amis qui en ont besoin. il peut jeter un oeil ci-dessous.

Préface

Lorsque j'ai fait une demande récemment, j'ai constaté que j'avais entré le code de vérification correct, mais l'erreur de code de vérification s'est affichée.

Enfin, en traçant le code, nous avons constaté que si le modèle était vérifié séparément avant l'enregistrement, une fois la vérification terminée, le code de vérification sera régénéré

et ensuite lorsque nous Model save , la validation sera également effectuée, le code de vérification a été régénéré, il ne correspondra donc pas à

// 如果这里用到了验证码,就会出问题

$model = new Test();

$model->validate();

$model->save();

// 这样是正确的

$model = new Test();
// 把需要验证的 attribute 放进去,排除验证码字段
$model->validate(array('test1','test2'));

$model->save()

nous Vous pouvez voir framework/web/widgets/captcha/CCaptchaAction.php et vous pouvez facilement trouver 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;
 }
}

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