Yii2 验证码的使用

首页 / 其他 / 正文

输出验证码

首先需要在某个控制器下进行映射,例如在site控制器中

class SiteController extends \yii\web\Controller{
    public function actions(){
        return [
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
                'width' => 220, //宽
                'height' => 70, // 高
                'padding' => '0', //内边距
                'transparent' => true, //透明底
                'backColor' => 0x000000, //背景色
                'foreColor' => 0xFFFFFF, //文字色
            ],
        ];
    }
}

当访问/site/captcha的时候就能看到一张图片 ,yii在输出的时候已经将验证码写入了session

在页面中输出

// 可以直接使用img标签方式输出
<img id="captcha" src="<?php echo Url::to(['site/captcha'])?>">
// 也可以通过小部件进行输出
echo yii\captcha\Captcha::widget(['name' => 'code']);

点击刷新

上边这样输出了之后,发现在前台点击并不会刷新。但如果使用传统的js方式刷新,这种方式并不好使:

<img src="/index.php?r=site/captcha" onclick="this.src=/index.php?r=site/captcha&v=随机数" />
// 这样当点击的时候,发现验证码中的字没有变,只是大小啥的改变了一下

可以通过以下方法解决:

// 通过ajax静态请求一个不同的验证码地址,然后将获取到的地址赋值给img标签的src
$.get('<?php echo Url::to(['site/captcha', 'refresh' => 1])?>', function (data) {
    console.log(data);
});
打赏
评论区
头像