>  기사  >  백엔드 개발  >  Yii가 올바른 인증 코드를 입력했지만 인증에 실패하는 문제를 해결하는 방법

Yii가 올바른 인증 코드를 입력했지만 인증에 실패하는 문제를 해결하는 방법

怪我咯
怪我咯원래의
2017-06-16 10:43:481423검색

이 글에서는 Yii가 올바른 인증 코드를 입력했지만 인증에 실패하는 문제에 대한 해결 방법을 주로 소개합니다. 이 글에서는 필요한 모든 사람이 참조할 수 있고 학습할 수 있는 예제 코드를 통해 자세히 소개합니다. 아래를 살펴보세요.

머리말

최근 요청시 인증코드를 정확히 입력했는데 인증코드 오류가 뜹니다

드디어 코드를 추적해본 결과 모델이 별도로 검증된 것을 확인했습니다. 저장하기 전에 인증을 완료하면 인증 코드가 다시 생성됩니다

그런 다음 모델 저장할 때에도 인증이 진행되므로 인증 코드가 다시 생성됩니다. 일치하지 않음Model save 时,也会进行 validate 验证,验证时,验证码已经重新生成了,所以会匹配不上

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

$model = new Test();

$model->validate();

$model->save();

// 这样是正确的

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

$model->save()

我们可以看framework/web/widgets/captcha/CCaptchaAction.php

<?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;
 }
}

🎜🎜🎜rrreee🎜🎜🎜framework/web/widgets/captcha/CCaptchaAction.php를 보면 문제를 쉽게 찾을 수 있습니다🎜🎜🎜rrreee

위 내용은 Yii가 올바른 인증 코드를 입력했지만 인증에 실패하는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.