输出验证码
首先需要在某个控制器下进行映射,例如在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);
});