这篇文章主要介绍yii自带验证码的实现方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
总共分为三个方面:控制器配置、模型rules配置和视图配置。
第一步:控制器配置
将下列代码配置在actions中,请求验证码链接对应为 “控制器/captcha”。
'captcha' => [ 'class' => 'yii\captcha\CaptchaAction', // 'backColor'=>0x000000,//背景颜色 'maxLength' => 4, //最大显示个数 'minLength' => 4,//最少显示个数 'padding' => 5,//间距 'height'=>45,//高度 'width' => 75, //宽度 // 'foreColor'=>0xffffff, //字体颜色 'offset'=>4, ],
第二步:模型rules配置,即验证配置。
首先声明公共变量
public $verifyCode
其次在rules方法中配置验证
['verifyCode', 'captcha','captchaAction'=>'user/captcha','on' => ['login']]
在这条配置中的"captchaAction"加入了配置,即控制器的路由,如果不进行配置的话会走site/captcha的路由,这是框架样例的路由。
第三步:视图中的配置
在ActiveForm中加入如下代码:
<?= $form->field($model,'verifyCode')->widget( Captcha::className(), [ 'template' => '{image}{input}', 'captchaAction'=>'user/captcha', // 此注意要使用自己配置的那个控制器验证码路由 'imageOptions'=>[ 'style'=>'cursor:pointer;width:77px'] ] )
最后有一个巨坑的问题:由于编码过程中使用了一些windows下的换行符或者空格,导致了未知的输出,会导致验证码图片不能够正常的生成。
这是需要在CaptchaAction类中的renderImageByGD方法中加入如下代码:
imagecolordeallocate($image, $foreColor); ob_clean(); // 此行为插入代码,目的是清空缓存区为输出图片提供干净空间。 ob_start(); imagepng($image); imagedestroy($image);
以上是“yii自带验证码的实现方法”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。