yii2.0 模型rules驗證詳解
Yii2自備的註冊可以作為網站的註冊功能,但添加重複密碼和驗證碼會更加完美!
問題:
用戶名沒有做嚴格的限制,類似“111”,“123456”,“_____111”這樣的用戶名都是被允許的,那麼如何限制用戶輸入我們所希望的用戶名呢?
一般的註冊,都有重複輸入密碼的input框,是為了讓使用者再次確認自己輸入的密碼,如何加入呢?
為了提高註冊用戶的質量,防止批量註冊,添加驗證碼是不錯的選擇,如何加?
如何在不修改邏輯程式碼的情況下完美解決以上三個問題?看了下面的教程,一目了然!
以高級版2.0.6為例,打開/frontend/models/SignupForm.php
, ['username', 'required'], ['username', 'unique', 'targetClass' => 'commonmodelsUser', 'message' => 'This username has already been taken.'], ['username', 'string', 'min' => 2, 'max' => 255], ['email', 'filter', 'filter' => 'trim'], ['email', 'required'], ['email', 'email'], ['email', 'string', 'max' => 255], ['email', 'unique', 'targetClass' => 'commonmodelsUser', 'message' => 'This email address has already been taken.'], ['password', 'required'], ['password', 'string', 'min' => 6], ]; } 只需修改rules规则即可完美实现 a.添加用户字符限制,6-16位 ['username', 'string', 'min' => 6, 'max' => 16], 输入限制:用户名由字母,汉字,数字,下划线组成,且不能以数字和下划线开头。 ['username', 'match','pattern'=>'/^[(x{4E00}-x{9FA5})a-zA-Z]+[(x{4E00}-x{9FA5})a-zA-Z_d]*$/u', 'message'=>'用户名由字母,汉字,数字,下划线组成,且不能以数字和下划线开头。'], b.添加重复密码字段 public $repassword; 一般重复密码与密码的字段验证基本上是一致的,所以可以在password中添加repassword,并添加两次输入一致的限制 [['password','repassword'], 'required'], [['password','repassword'], 'string', 'min' => 6], ['repassword', 'compare', 'compareAttribute' => 'password','message'=>'两次输入的密码不一致!'], c.添加验证码字段 public $verifyCode; 验证码有自带的扩展,只需添加以下代码即可 ['verifyCode', 'captcha'], 本例为SiteController中添加[/b] public function actions() { return [ 'captcha' => [ 'class' => 'yiicaptchaCaptchaAction', 'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null, ], ]; }
登入後複製
修改之後的規則
class SignupForm extends Model { public $username; public $email; public $password; public $repassword; public $verifyCode; public function rules() { return [ ['username', 'filter', 'filter' => 'trim'], ['username', 'required'], ['username', 'unique', 'targetClass' => 'commonmodelsUser', 'message' => '该用户名已被使用!'], ['username', 'string', 'min' => 6, 'max' => 16], ['username', 'match','pattern'=>'/^[(x{4E00}-x{9FA5})a-zA-Z]+[(x{4E00}-x{9FA5})a-zA-Z_d]*$/u', 'message'=>'用户名由字母,汉字,数字,下划线组成,且不能以数字和下划线开头。'], ['email', 'filter', 'filter' => 'trim'], ['email', 'required'], ['email', 'email'], ['email', 'string', 'max' => 255], ['email', 'unique', 'targetClass' => 'commonmodelsUser', 'message' => '该邮箱已经被注册!'], [['password','repassword'], 'required'], [['password','repassword'], 'string', 'min' => 6], ['repassword', 'compare', 'compareAttribute' => 'password','message'=>'两次输入的密码不一致!'], ['verifyCode', 'captcha'], ]; } ....
登入後複製
驗證一下效果
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
Windows 11 KB5054979中的新功能以及如何解決更新問題
3 週前
By DDD
如何修復KB5055523無法在Windows 11中安裝?
2 週前
By DDD
Inzoi:如何申請學校和大學
3 週前
By DDD
如何修復KB5055518無法在Windows 10中安裝?
2 週前
By DDD
Roblox:Dead Rails - 如何召喚和擊敗Nikola Tesla
4 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)