介绍
这篇文章主要介绍yii自带验证码的实现方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
总共分为三个方面:控制器配置,模型规则配置和视图配置。
<强>第一步:控制器配置强>
将下列代码配置在行动中,请求验证码链接对应为“控制器/验证码”。
& # 39;验证码# 39;,=祝辞,( ,,,,,,,,& # 39;类# 39;,=祝辞,& # 39;yii \验证码\ CaptchaAction& # 39; ,,,//,,,,,& # 39;背景色# 39;=祝辞0 x000000,//背景颜色 ,,,,,,,,& # 39;最大长度,,=祝辞,4,,//最大显示个数 ,,,,,,,,& # 39;最小长度,,=祝辞,4//最少显示个数 ,,,,,,,,& # 39;填充# 39;,=祝辞,5//间距 ,,,,,,,,& # 39;高度# 39;=在45岁//高度 ,,,,,,,,& # 39;宽度# 39;,=祝辞,75,,,//宽度 ,,,,,//,,,& # 39;字体颜色# 39;=祝辞0 xffffff,,,,,,//字体颜色 ,,,,,,,,& # 39;抵消# 39;=祝辞;4, ],
<强>第二步:模型规则配置,即验证配置。强>
首先声明公共变量
public 美元verifyCode
其次在规则方法中配置验证
[& # 39;verifyCode& # 39;,, & # 39;验证码# 39;,& # 39;captchaAction& # 39;=祝辞& # 39;用户/验证码# 39;,& # 39;在# 39;,=祝辞,[& # 39;登录# 39;]]
在这条配置中的“captchaAction"加入了配置,即控制器的路由,如果不进行配置的话会走网站/验证码的路由,这是框架样例的路由。
<强>第三步:视图中的配置强>
在ActiveForm中加入如下代码:
& lt; ?=,美元形式→字段(模型中,美元& # 39;verifyCode& # 39;)→部件( ,,,验证码::类名(), ,,,( ,,,& # 39;模板# 39;,=祝辞,& # 39;{形象}{输入}& # 39;, ,,,& # 39;captchaAction& # 39;=祝辞& # 39;用户/验证码# 39;,,//,此注意要使用自己配置的那个控制器验证码路由 ,,,& # 39;imageOptions& # 39;=祝辞(,& # 39;风格# 39;=祝辞& # 39;游标:指针;宽度:77 px # 39;】 ,,,) ,,,)
最后有一个巨坑的问题:由于编码过程中使用了一些windows下的换行符或者空格,导致了未知的输出,会导致验证码图片不能够正常的生成。
这是需要在CaptchaAction类中的renderImageByGD方法中加入如下代码:
imagecolordeallocate($图像,字体颜色美元); ,//ob_clean();还以为,此行为插入代码,目的是清空缓存区为输出图片提供干净空间。 ob_start (); imagepng(形象); imagedestroy图像($);