ホームページ >PHPフレームワーク >YII >正しい確認コードを入力すると yii でエラーが表示される

正しい確認コードを入力すると yii でエラーが表示される

王林
王林オリジナル
2019-12-24 13:43:471658ブラウズ

正しい確認コードを入力すると yii でエラーが表示される

リクエストを行う際、正しい確認コードを入力したにもかかわらず、確認コード エラーが表示されました。

最後に、コードを確認すると、モデルを保存する前に個別に検証すると、検証の完了後に検証コードが再生成されることがわかりました。そして、モデル保存の際に検証検証も行いますが、検証中に検証コードが再生成されているため、一致しません。

問題の発見:

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;
    }
}
// 如果这里用到了验证码,就会出问题$model = new Test();

$model->validate();

$model->save();
// 这样是正确的$model = new  Test();
// 把需要验证的 attribute 放进去,排除验证码字段
$model->validate(array(&#39;test1&#39;,&#39;test2&#39;));
$model->save()

おすすめの関連記事とチュートリアル: yii チュートリアル

以上が正しい確認コードを入力すると yii でエラーが表示されるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。