首頁 > php框架 > YII > 主體

yii自備驗證碼怎麼做

爱喝马黛茶的安东尼
發布: 2019-11-09 10:39:15
原創
2033 人瀏覽過

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,&#39;verifyCode&#39;)->widget(
    Captcha::className(),
    [
    &#39;template&#39; => &#39;{image}{input}&#39;,
    &#39;captchaAction&#39;=>&#39;user/captcha&#39;, // 此注意要使用自己配置的那个控制器验证码路由
    &#39;imageOptions&#39;=>[ &#39;style&#39;=>&#39;cursor:pointer;width:77px&#39;]
    ]
    )
登入後複製

最後有一個巨坑的問題:由於編碼過程中使用了一些windows下的換行符或空格,導致了未知的輸出,會導致驗證碼圖片不能夠正常的生成。

這是需要在CaptchaAction類別中的renderImageByGD方法中加入以下程式碼:

imagecolordeallocate($image, $foreColor);
 
ob_clean(); // 此行为插入代码,目的是清空缓存区为输出图片提供干净空间。
ob_start();
imagepng($image);
imagedestroy($image);
登入後複製

php中文網,大量的免費yii入門教學,歡迎線上學習!

以上是yii自備驗證碼怎麼做的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
yii
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板