谁一开始就是大神?

Yii2.0验证码问题[2.0]

public function actions()
{
    return [
          'captcha' => [
            'class' => 'yii\captcha\CaptchaAction',                 
            'fixedVerifyCode' => substr(mt_rand(1000,9999),0,4),//直到加了这个代码就出问题了
            'minLength' => 4,
            'maxLength' => 4,                
        ],
        'error' => [
            'class' => 'yii\web\ErrorAction',
        ],
    ];
}

本来一切正常,字母显示4个,能正常验证登录。
为了降低验证码难度,想改成4个数字,添加了这行代码
'fixedVerifyCode' => substr(mt_rand(1000,9999),0,4),
能正常显示4个数字了,但是输入正确的验证码后,就是提示验证码错误,这个该怎么排查原因?

使用 fixedVerifyCode 之后, 并没有写 session.
也就是说, 使用了 fixedVerifyCode 之后 生成验证码的时候直接返回了 fixedVerifyCode 的值, 验证的时候 又是拿你输入的 和 fixedVerifyCode的值做对比.. 而你的fixedVerifyCode 每次都变.
你看 fixedVerifyCode 注释, 讲的很清楚, 通常用在自动化测试 方便复制验证码的场景下使用.
非要使用四位数字的话, 继承并重写一下 yii\captcha\CaptchaAction 类里面的 生成验证码的策略吧.
“通常用在自动化测试 方便复制验证码的场景下使用”,不懂这句话是什么意思,求大神讲解。

赞(0) 打赏
未经允许不得转载:菜鸟之家 » Yii2.0验证码问题[2.0]

评论 抢沙发

登录

找回密码

注册