2015-08-11 16:24:00 6224次浏览 2条回答 0 悬赏 10 金钱
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个数字了,但是输入正确的验证码后,就是提示验证码错误,这个该怎么排查原因?

最佳答案

  • 500miles 发布于 2015-08-11 18:56 举报

    使用 fixedVerifyCode 之后, 并没有写 session.

    也就是说, 使用了 fixedVerifyCode 之后 生成验证码的时候直接返回了 fixedVerifyCode 的值, 验证的时候 又是拿你输入的 和 fixedVerifyCode的值做对比.. 而你的fixedVerifyCode 每次都变.

    你看 fixedVerifyCode 注释, 讲的很清楚, 通常用在自动化测试 方便复制验证码的场景下使用.

    非要使用四位数字的话, 继承并重写一下 yii\captcha\CaptchaAction 类里面的 生成验证码的策略吧.

    1 条回复
    回复于 2015-08-11 23:05 回复

    了解了,谢谢

    , 觉得很赞
  • 回答于 2016-05-05 09:35 举报

    “通常用在自动化测试 方便复制验证码的场景下使用”,不懂这句话是什么意思,求大神讲解。

    2 条回复
    回复于 2016-05-06 11:31 回复

    每次都固定显示一个验证码,方便测试,方便开发

    回复于 2016-05-06 11:35 回复

    谢谢“搞搞的传奇”。

您需要登录后才可以回答。登录 | 立即注册
搞搞的传奇
见习主管

搞搞的传奇

注册时间:2015-02-24
最后登录:2020-06-04
在线时长:24小时46分
  • 粉丝8
  • 金钱5
  • 威望10
  • 积分345

热门问题