发布网友 发布时间:2022-04-29 08:15
共4个回答
懂视网 时间:2022-04-29 12:37
yii2验证码样式如何设置
第一步,控制器:
在任意controller里面重写方法
public function actions() { return [ 'captcha' => [ 'class' => 'yiicaptchaCaptchaAction', 'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null, 'backColor' => 0x000000,//背景颜色 'maxLength' => 6, //最大显示个数 'minLength' => 5,//最少显示个数 'padding' => 5,//间距 'height' => 40,//高度 'width' => 130, //宽度 'foreColor' => 0xffffff, //字体颜色 'offset' => 4, //设置字符偏移量 有效果 ], ]; }
第二步,表单模型:
这里只给出验证码相关的部分。
相关文章教程推荐:yii教程
class ContactForm extends Model{ public $verifyCode; public function rules(){ return [ ['verifyCode', 'required'], ['verifyCode', 'captcha'], ]; } }
验证规则里面验证码的验证器是captcha
。
第三步,视图:
用ActiveForm生成对应字段。
captchaAction
参数指定第一步是在写在哪里的,默认是site
里面。
<?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [ 'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>', ]) ?>
验证码,生成和验证的整个流程就完成了。
以上是生成验证码的流程,因为验证码数字是在代码中写死的,如果我们需要数字的话,那该怎么办呢?
很好办,我们可以自己写个类来继承CaptchaAction,重写generateVerifyCode方法,例子:
namespace yiicaptcha; class Newcaptcha extends CaptchaAction { protected function generateVerifyCode() { if ($this->minLength > $this->maxLength) { $this->maxLength = $this->minLength; } if ($this->minLength < 3) { $this->minLength = 3; } if ($this->maxLength > 20) { $this->maxLength = 20; } $length = mt_rand($this->minLength, $this->maxLength); $letters = '1234567890123456789012'; $vowels = 'aeiou'; $code = ''; for ($i = 0; $i < $length; ++$i) { if ($i % 2 && mt_rand(0, 10) > 2 || !($i % 2) && mt_rand(0, 10) > 9) { $code .= $vowels[mt_rand(0, 4)]; } else { $code .= $letters[mt_rand(0, 20)]; } } return $code; } }
生成类文件成功。
然后再更改控制器的配置
'captcha' => [ 'class' => 'yiicaptchaNewcaptcha', 'maxLength' => 5, 'minLength' =>5 ],
好了,更改完成,让我们来看下效果吧!
更多yii框架知识,可以观看相关编程学习课程,!!
热心网友 时间:2022-04-29 09:45
imagestring换成imagettftext热心网友 时间:2022-04-29 11:03
将imagestring换成imagettftext试试,imagettftext的参数自行百度热心网友 时间:2022-04-29 12:37
自己封装个不就完了,表示这个意义不大