當前位置:才華齋>計算機>php語言>

ThinkPHP中自動驗證

php語言 閱讀(2.98W)
ThinkPHP中自動驗證
  學無止境,剛開始學習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;  }  }