资讯专栏INFORMATION COLUMN

解决Yii 输入正确验证码验证失败

james / 2748人阅读

摘要:在做一个需求时,发现输入正确验证码,但是都提示验证码错误最后追踪代码发现,如果在前,多带带做了验证,则在验证结束后,会重新生成验证码然后在我们时,也会进行验证,验证时,验证码已经重新生成了,所以会匹配不上如果这里用到了验证码,就会出问题这

在做一个需求时,发现输入正确验证码,但是都提示验证码错误

最后追踪代码发现,如果 Model 在 save 前,多带带做了 validate 验证,则在验证结束后,会重新生成验证码

然后在我们 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 可以很容易就发现问题了

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21455.html

相关文章

  • Yii2验证使用,不改源实现验证刷新

    摘要:说明框架的官方文档对于验证码的使用涉及的篇幅很少,然而验证码在开发中其实使用得非常多,以下是通过查阅资料,摸索出的方案解决了验证码不能刷新的问题使用步骤定义验证码和一样,验证码需定义在方法中通常为了方便,可以直接将它定义在中,如果想定义在控 说明 Yii2框架的官方文档对于验证码的使用涉及的篇幅很少,然而验证码在开发中其实使用得非常多,以下是通过查阅资料,摸索出的方案 解决了验证码不...

    yy13818512006 评论0 收藏0
  • yii2的加密解密那些事儿

    摘要:我们做程序的时候,加密解密是绕不开的话题,使用开发应用的时候,都内置了哪些有关加密解密安全方便的支持那本文将为你揭晓。函数声明为存在着第三个参数,比如我们可以传递会员的等,这样此信息将和一起作为加密解密的钥匙。 我们做程序的时候,加密解密是绕不开的话题,使用yii2开发应用的时候,都内置了哪些有关加密解密(安全)方便的支持那?本文将为你揭晓。 相关环境 操作系统及IDE macOS ...

    dendoink 评论0 收藏0
  • Yii2 验证手机号、邮箱唯一性

    摘要:好比注册功能模块,手机号邮箱注册这些,肯定是要验证其的唯一性的,重复了登录就会混乱。需求分析使用框架自带的在不刷新页面的情况下验证手机号邮箱唯一性。相关资料表单验证问题注册时验证手机号唯一 序言 验证唯一性很重要,说不上用得很普及,但是也必须要有。好比注册功能模块,手机号、邮箱注册这些,肯定是要验证其的唯一性的,重复了登录就会混乱。那么如何使用Yii2自带的targetClass验证唯...

    spacewander 评论0 收藏0
  • Yii2 验证手机号、邮箱唯一性

    摘要:好比注册功能模块,手机号邮箱注册这些,肯定是要验证其的唯一性的,重复了登录就会混乱。需求分析使用框架自带的在不刷新页面的情况下验证手机号邮箱唯一性。相关资料表单验证问题注册时验证手机号唯一 序言 验证唯一性很重要,说不上用得很普及,但是也必须要有。好比注册功能模块,手机号、邮箱注册这些,肯定是要验证其的唯一性的,重复了登录就会混乱。那么如何使用Yii2自带的targetClass验证唯...

    FuisonDesign 评论0 收藏0

发表评论

0条评论

james

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<