이 글에서는 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() . 'count'; 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!