1. 程式人生 > 實用技巧 >Yii2.0 驗證碼的使用

Yii2.0 驗證碼的使用

Yii2.0的自帶的驗證依賴於GD2或者ImageMagick擴充套件。

使用步驟如下:

  1. 重寫yii\web\Controller::actions()方法,用ID"captcha"註冊一個CaptchaAction類的action。

  2. 在表單模型裡面新增一個屬性,用來儲存使用者輸入的驗證碼字串;這個屬性的驗證器是"captcha"。

  3. 在視圖裡面,把yii\captcha\CaptchaWidget插入到表單裡面。


第一步,控制器:

在任意controller裡面重寫方法

1 2 3 4 5 6 7 8 9 10 11 12 13 /** *@inheritdoc */ publicfunctionactions() { return[ 'captcha'=>[ 'class'=>'yii\captcha\CaptchaAction', 'maxLength'=>5, 'minLength'=>5 ], ]; }



第二步,表單模型:

假如是一個登陸表單。

這裡只給出驗證碼相關的部分。

1 2 3 4 5 6 7 8 9 10 11 12 classLoginFormextendsModel { public$verifyCode; publicfunctionrules() { return[ ['verifyCode','required'], ['verifyCode','captcha'], ]; } }

驗證規則裡面驗證碼的驗證器是captcha。


第三步,檢視:

用ActiveForm生成對應欄位。

1 2 3 4 5 6 <?=$form->field($model,'verifyCode',[ 'options'=>['class'=>'form-groupform-group-lg'], ])->widget(Captcha::className(),[ 'template'=>"{image}", 'imageOptions'=>['alt'=>'驗證碼'], ]);?>


驗證碼,生成和驗證的整個流程就完成了。

效果圖,以登陸表單為例:

201501131.PNG


預設的驗證碼是純字母,沒有數字,而且這些可用字元是寫死在程式碼裡面的。

所以如果你要自定義裡面的字元的話,可以自己新建個類,繼承yii\captcha\CaptchaAction,重寫generateVerifyCode方法就可以了。

轉載於:https://my.oschina.net/tanwen/blog/484594