1.不能随网页刷新而刷新的错误解决办法:
修改源代码 vendor/yiisoft/yii2/captcha/CaptchaValidator.php

/**
     * @inheritdoc
     */publicfunctionclientValidateAttribute($object, $attribute, $view)
    {$captcha = $this->createCaptchaAction();
        $code = $captcha->getVerifyCode(true);
        $hash = $captcha->generateValidationHash($this->caseSensitive ? $code : strtolower($code));
        $options = [
            'hash' => $hash,
            'hashKey' => 'yiiCaptcha/' . $captcha->getUniqueId(),
            'caseSensitive' => $this->caseSensitive,
            'message' => Yii::$app->getI18n()->format($this->message, [
                'attribute' => $object->getAttributeLabel($attribute),
            ], Yii::$app->language),
        ];
        if ($this->skipOnEmpty) {
            $options['skipOnEmpty'] = 1;
        }

        ValidationAsset::register($view);

        return'yii.validation.captcha(value, messages, ' . json_encode($options, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . ');';
    }
}
登录后复制
$code=$captcha->getVerifyCode(false); false改成true
登录后复制

另外出现

解决方法:
在 model中修改captchaAction的值

    ['verifyCode', 'captcha','message' =>'验证码错误','captchaAction'=>'login/captcha'],
登录后复制

在view中:

$form->field($loginForm, 'verifyCode',['options'=>['class' => 'form-group']])->widget(Captcha::className(),[
                'captchaAction' => '/login/captcha',
                'imageOptions' => ['alt'=>'点击换图','title'=>'点击换图','style'=>'cursor:pointer'],
                'options' => [
                    'placeholder' => '验证码',
                    'class' => 'form-control',
                    'style' => 'margin-top:10px;'
                ]
            ])->label(false); ?>
登录后复制

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介绍了 yii20验证码不能随网页一起刷新/出现site/captcha的错误,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

  • 09-18 11:08