【问题标题】:Why yii captcha always shows a fixed picture?为什么yii验证码总是显示固定图片?
【发布时间】:2014-07-11 10:17:45
【问题描述】:

Captcha 可以正常工作,但我不知道为什么它没有生成要显示的新代码?我查看了文档,但可以找到可以解决我的问题的东西。

这里有什么我想念的吗?谢谢。

public function actions()
    {
        return array(
            'captcha'=>array(
                'class'=>'CCaptchaAction',
                'backColor'=>0xFFFFFF,
            ),
        );
    }

我的视图文件:

        <?php echo $form->labelEx($model,'verifyCode'); ?>  
        <?php $this->widget('CCaptcha'); ?>
        <?php echo $form->textField($model,'verifyCode'); ?>
        <?php echo $form->error($model,'verifyCode'); ?>

【问题讨论】:

  • @SamuelLiew,我认为它与会话没有任何关系,因为它根本没有改变。如果我明天再来测试它,我会看到同样的结果。
  • 如果我减少会话超时。这将是公开的。如何解决这个特定问题。短暂的会话超时会使我的用户提前退出!
  • 我对全局会话超时值有误,请参阅我的答案。

标签: javascript php validation yii captcha


【解决方案1】:

这是一个已知的错误,很可能会在 Yii2 中修复。


在 Yii 论坛上,用户 Black suggests:

我的解决方案是在获取时删除我的控制器操作上的会话密钥。注意不要在任何其他地方删除它,因为它可能会在服务器验证时失败。

$session = Yii::app()->session;
$prefixLen = strlen(CCaptchaAction::SESSION_VAR_PREFIX);
foreach($session->keys as $key)
{
        if(strncmp(CCaptchaAction::SESSION_VAR_PREFIX, $key, $prefixLen) == 0)
                $session->remove($key);
}

另一种解决方法是在 Soph 提到的每个页面加载时use JavaScript to click on the refresh link

$(function() { 
    $('#yw0_button').click(); 
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 2018-03-14
    • 2018-06-10
    • 1970-01-01
    • 2019-12-20
    相关资源
    最近更新 更多