首先在控制器定义方法actions:
public function actions() { return [ 'captcha' => [ 'class' => 'yii\captcha\CaptchaAction', 'maxLength' => 4, //最大显示个数 'minLength' => 4, ], ]; }前台img标签直接应用<img src="<?=Url::to(['/site/captcha'])?>" class="codeimg"> 验证码即可正常显示。
在用jquery定义一个放到,每次进入页面就去请求刷新验证码。
$.get('<?php echo Yii::$app->urlManager->createUrl('site/captcha');?>?',{refresh:1},function(data){ evaldata=eval(data); $(".codeimg").attr('src',evaldata.url); });点击图片刷新验证码:
$(document).on('click','.codeimg',function(){ $.get('<?php echo Yii::$app->urlManager->createUrl('site/captcha');?>',{refresh:1},function(data){ evaldata=eval(data); $(".codeimg").attr('src',evaldata.url); }); })后台验证前台传来的验证码是否正确。
#$code传来的验证码 $result = $this->createAction('captcha')->validate($code, false); if($result){ echo '验证成功'; }else{ echo '验证失败'; }