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

怪我咯
Libérer: 2023-03-10 14:14:02
original
1432 Les gens l'ont consulté

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

// 这样是正确的

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

$model->save()
Copier après la connexion

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

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