學無止境,剛開始學習PHP會覺得簡單,但是越學會越難。下面是小編整理的關於ThinkPHP中自動驗證的知識,希望對大家有用,更多消息請關注應屆畢業生網。 ThinkPHP中自動驗證:array(‘字段’,‘驗證規則’,‘錯誤提示’[,‘驗證條件’,‘附加規則’,‘驗證時間’]),。 1、驗證字段:一般來說是表單的字段名,但不一定需要與數據表的.字段匹配,比如新用戶註冊時常見的密碼確認 2、驗證規則:系統內置了常用的規則,require(字段必填)、 email(郵箱格式)、url(url格式)、currency(貨幣)、number(正整數)、integer(整數)、double(浮點數)、zip(郵 政編碼 政編碼)、english。這些規則默認採用的附加規則是 regex,正則表達式驗證,只不過是設定好的。 3、錯誤信息:驗證失敗後的提示。 4、驗證條件:共三種: ::EXISTS_VALIDATE 或 0,表示存在字段就驗證(推薦使用) ; ::MUST_VALIDATE 或 1,表示必須驗證; ::VALUE_VALIDATE 或 2,表示值不爲空的時候驗證。 5、驗證時間:主要新增修改等驗證。 ::MODEL_INSERT 或 1 新增數據時驗證; ::MODEL_UPDATE 或 2 編輯數據時驗證; ::MODEL_BOTH 或 3 全部情況下驗證(推薦使用)。 一、靜態定義 在模型類裏預先定義好該模型的自動驗證規則,就是靜態定義。 1、在Home/Model目錄下建立文件,內容如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 class UserModel extends Model { protected $_validate = array( //默認情況下用系統內置 array('user', 'require', '用戶不得爲空!'), //驗證數據唯一性 array('user', '', '用戶名稱已存在!',2,'unique',1), //驗證密碼不得爲空 array('pass', 'require', '密碼不得爲空!'), //密碼不得小於六位不得大於20位 array('pass', '6,20', '密碼不得小於6位,不得大於20位', 3,'length'), ); } 2、在Home/controller目錄下建立,內容如下: ? 1 2 3 4 5 6 7 8 9 10 //控制器create()方法自動調用驗證 $user = D('User'); $data['user'] = '蠟筆小新'; $data['pass'] = '123'; if ($user->create($data)) { echo '所有數據驗證成功!'; } else { //輸出錯誤信息 var_dump($user->getError()); } 重點介紹一下附加規則中的callback(回調驗證)和function(函數驗證): 1、callback(回調驗證) 中的格式如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class UserModel extends Model{ protected $_validate=array( array('user','checklength','用戶名必須在3-5之間!',0,'callback',3,array(3,5)), ); function checklength($str,$min,$max){ preg_match_all("/./u", $str,$matchs); $len=count($matchs[0]); if($len<$min || $len>$max){ return false; }else{ return true; } } } 其中回調函數直接寫在user類裏面 2、function(函數驗證) 中的格式如下: ? class UserModel extends Model{ protected $_validate=array( array('user','checklength','用戶名必須在3-5之間!',0,'function',3,array(3,5)), ); } 函數內容需要在 Home/Common 文件夾下的 Common 文件夾建立 文件,會自動加載,內容如下: ? function checkLength($str,$min,$max) { preg_match_all("/./u", $str, $matches); $len = count($matches[0]); if ($len < $min || $len > $max) { return false; } else { return true; } }