yii自帶驗(yàn)證碼怎么做

yii自帶驗(yàn)證碼怎么做

總共分為三個(gè)方面:控制器配置、模型rules配置和視圖配置。

第一步:控制器配置

將下列代碼配置在actions中,請(qǐng)求驗(yàn)證碼鏈接對(duì)應(yīng)為 “控制器/captcha”。

'captcha'?=>?[ ?????????'class'?=>?'YIIcaptchaCaptchaAction', ????//?????'backColor'=>0x000000,//背景顏色 ?????????'maxLength'?=>?4,?//最大顯示個(gè)數(shù) ?????????'minLength'?=>?4,//最少顯示個(gè)數(shù) ?????????'padding'?=>?5,//間距 ?????????'height'=>45,//高度 ?????????'width'?=>?75,??//寬度 ??????//???'foreColor'=>0xffffff,?????//字體顏色 ?????????'offset'=>4, ?],

第二步:模型rules配置,即驗(yàn)證配置。

首先聲明公共變量?

public?$verifyCode

其次在rules方法中配置驗(yàn)證

['verifyCode',?'captcha','captchaAction'=>'user/captcha','on'?=>?['login']]

在這條配置中的”captchaAction”加入了配置,即控制器的路由,如果不進(jìn)行配置的話會(huì)走site/captcha的路由,這是框架樣例的路由。

第三步:視圖中的配置

在ActiveForm中加入如下代碼:

=?$form->field($model,'verifyCode')->widget( ????Captcha::className(), ????[ ????'template'?=>?'{image}{input}', ????'captchaAction'=>'user/captcha',?//?此注意要使用自己配置的那個(gè)控制器驗(yàn)證碼路由 ????'imageOptions'=>[?'style'=>'cursor:pointer;width:77px'] ????] ????)

最后有一個(gè)巨坑的問題:由于編碼過程中使用了一些windows下的換行符或者空格,導(dǎo)致了未知的輸出,會(huì)導(dǎo)致驗(yàn)證碼圖片不能夠正常的生成。

這是需要在CaptchaAction類中的renderImageByGD方法中加入如下代碼:

imagecolordeallocate($image,?$foreColor); ? ob_clean();?//?此行為插入代碼,目的是清空緩存區(qū)為輸出圖片提供干凈空間。 ob_start(); imagepng($image); imagedestroy($image);

php中文網(wǎng),大量的免費(fèi)yii入門教程,歡迎在線學(xué)習(xí)!

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊14 分享