Yii2.0 驗證碼的使用
阿新 • • 發佈:2020-10-21
Yii2.0的自帶的驗證依賴於GD2或者ImageMagick擴充套件。
使用步驟如下:
-
重寫yii\web\Controller::actions()方法,用ID"captcha"註冊一個CaptchaAction類的action。
-
在表單模型裡面新增一個屬性,用來儲存使用者輸入的驗證碼字串;這個屬性的驗證器是"captcha"。
-
在視圖裡面,把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'=>'驗證碼'], ]);?> |
驗證碼,生成和驗證的整個流程就完成了。
效果圖,以登陸表單為例:
預設的驗證碼是純字母,沒有數字,而且這些可用字元是寫死在程式碼裡面的。
所以如果你要自定義裡面的字元的話,可以自己新建個類,繼承yii\captcha\CaptchaAction,重寫generateVerifyCode方法就可以了。
轉載於:https://my.oschina.net/tanwen/blog/484594