2015-04-20 22:18:37 13275次浏览 3条回答 1 悬赏 20 金钱

请问各位大大,我打验证码时,ajax验证可以通过,提交后却终是出现error信息,验证码错误,我查看session的素有内容,发现正确的验证码就始终不变的,难怪总是错,请问这个怎么解决呢?跪求真理
session内容如下

array(6) { ["__flash"]=> array(0) { } ["__captcha/site/captcha"]=> string(7) "bqcggov" ["__captcha/site/captchacount"]=> int(1) ["__returnUrl"]=> string(19) "/nova/user/register" ["__captcha/user/captcha"]=> string(6) "kappfi" ["__captcha/user/captchacount"]=> int(2) }

每次刷新["__flash"]是变化的,["__returnUrl"]始终不变

最佳答案

  • 達達尼亞 发布于 2015-04-24 11:52 举报

    验证码不变需要改框架源码 vender\yiisoft\yii2\captcha\CaptchaAction.php getVerifyCode($regenerate = true)

    验证码总是错误 应该是你的 $captchaAction 属性没有设置正确。
    model 的rules方法
    ['captcha', 'captcha', 'message'=>'验证码错误', 'captchaAction'=>'user/captcha'],

    模板的地方也有个 captchaAction 选项。
    <?php echo Captcha::widget(['name'=>'captchaimg','captchaAction'=>'login/captcha','imageOptions'=>['id'=>'captchaimg', 'title'=>'换一个', 'alt'=>'换一个', 'style'=>'cursor:pointer;'],'template'=>'{image}']); ?>

    7 条回复
    回复于 2015-11-30 21:46 回复

    谢谢。我的就是captchaAction没设置正确,老是通不过,原来是模版的地方设置了,rules那里没有设置。

    回复于 2016-03-03 10:05 回复

    为什么我在rules添加了 'message'=>'验证码错误', 'captchaAction'=>'user/captcha'会报错?

    回复于 2016-04-12 16:06 回复

    你看看你的 action 是 user/captcha 吗,要对应的上啊。

    回复于 2016-12-08 20:00 回复

    感谢,这个答案很有用

    回复于 2017-04-13 20:45 回复

    我验证码没用model,直接在控制器里用$caprcha->validate($data['captcha']);怎么验证呢

    回复于 2017-12-18 18:29 回复

    果然是正解,特别是模块下的验证码验证,一定要注意model层中rules中的'captchaAction'=>'模块名/控制器/captcha'。

    回复于 2018-01-27 14:24 回复

    我验证码没有用model,直接自定义的登录页面就是想用yii2框架里面的验证码功能
    我直接在页面里面用 <?php echo Captcha::widget(['name'=>'captchaimg','captchaAction'=>'login/captcha','imageOptions'=>['id'=>'captchaimg', 'title'=>'换一个', 'alt'=>'换一个', 'style'=>'cursor:pointer;'],'template'=>'{image}']); ?>
    然后在页面里面怎么去把接收到的验证码比对验证呢?
    找了一些资料
    $imgVerifyCode = Yii::$app->request->post("checkcode");
    $imgVerifyCode = HtmlPurifier::process($imgVerifyCode);
    $caprcha = new CaptchaValidator();
    $verifyRs = $caprcha->validate($imgVerifyCode);
    var_dump($verifyRs);
    if ($verifyRs == false) {

    echo "图形验证码有误";
    

    }else{

    echo "图形验证码Yes";
    

    }

    但是始终通不过验证,始终都是false

    , , 觉得很赞
  • 回答于 2017-04-13 20:44 举报

    我验证码没用model,直接在控制器里用$caprcha->validate($data['captcha']);怎么验证呢

  • 回答于 2018-01-27 14:20 举报

    我验证码没有用model,直接自定义的登录页面就是想用yii2框架里面的验证码功能
    我直接在页面里面用 <?php echo Captcha::widget(['name'=>'captchaimg','captchaAction'=>'login/captcha','imageOptions'=>['id'=>'captchaimg', 'title'=>'换一个', 'alt'=>'换一个', 'style'=>'cursor:pointer;'],'template'=>'{image}']); ?>
    然后在页面里面怎么去把接收到的验证码比对验证呢?
    找了一些资料

            $imgVerifyCode = Yii::$app->request->post("checkcode");
            $imgVerifyCode = HtmlPurifier::process($imgVerifyCode);
            $caprcha = new CaptchaValidator();
            $verifyRs = $caprcha->validate($imgVerifyCode);
            var_dump($verifyRs);
            if ($verifyRs == false) {
                echo "图形验证码有误";
            }else{
                echo "图形验证码Yes";
            }
            
            但是始终通不过验证,始终都是false
    
    1 条回复
    回复于 2021-02-17 11:14 回复

    你解决了吗,我也是同样问题

您需要登录后才可以回答。登录 | 立即注册
housirvip
主管

housirvip

注册时间:2015-03-30
最后登录:2015-08-23
在线时长:20小时9分
  • 粉丝4
  • 金钱510
  • 威望0
  • 积分710

热门问题