溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在thinkPHP中實現(xiàn)一個表單自動驗證功能

發(fā)布時間:2020-12-25 15:28:13 來源:億速云 閱讀:141 作者:Leah 欄目:開發(fā)技術

本篇文章為大家展示了怎么在thinkPHP中實現(xiàn)一個表單自動驗證功能,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

thinkphp 在Model基類為我們定義了自動驗證的函數(shù)和正則表達式,我們只需要在對應的數(shù)據(jù)庫表的模型類下建立$_validate屬性就可以了。

1、我們找到Model基類,可以看到 protected $_validate       = array();  // 自動驗證定,它是數(shù)組類型的,下面在對應數(shù)據(jù)模型文件定義它;

2、

復制代碼 代碼如下:


public function CheckVerify($verify) {

   if (md5($verify) != Session::get('verify')) return false;
        return true;
}
//自動驗證

復制代碼 代碼如下:


   protected $_validate = array(
        array("title", "require", "標題必須!"),
        array('categoryId', 'require', "類別必須!"),
        array('content', 'require', "內容必須!"),
        array('verify', 'require','驗證碼必須!'),
        array('verify', 'CheckVerify', '驗證碼錯誤!', 0, 'callback')
    );

3、格式說明:array(驗證字段,驗證規(guī)則,錯誤提示,驗證條件,附加規(guī)則,驗證時間),

4、參數(shù)解釋:

驗證字段:需要驗證的表單字段名稱,這個字段不一定是數(shù)據(jù)庫字段,也可以是表單的一些輔助字段,例如確認密碼和驗證碼等等。
驗證規(guī)則: 要進行驗證的規(guī)則,需要結合附加規(guī)則(必須),官方已經包含的規(guī)則如下(自己同時也可以加):

復制代碼 代碼如下:


$validate = array(
   'require'=> '/.+/',
   'email' => '/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/',
   'url' => '/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/',
   'currency' => '/^\d+(\.\d+)?$/',
   'number' => '/^\d+$/',
   'zip' => '/^[1-9]\d{5}$/',
   'integer' => '/^[-\+]?\d+$/',
   'double' => '/^[-\+]?\d+(\.\d+)?$/',
   'english' => '/^[A-Za-z]+$/',
);

提示信息: 用于驗證失敗后的提示信息定義(必須)、
驗證條件:(可選)
驗證條件的規(guī)則有三條:
Model::EXISTS_TO_VAILIDATE 或者0 存在字段就驗證 (默認)
Model::MUST_TO_VALIDATE 或者1 必須驗證
Model::VALUE_TO_VAILIDATE或者2 值不為空的時候驗證
附加規(guī)則:
regex 正則驗證,說明前面的那個驗證規(guī)則是一個正則表達式;
function 使用函數(shù)驗證,說明前面的那個驗證是個函數(shù)名;
callback 使用方法驗證,說明驗證規(guī)則是一個Model類的方法;
confirm 驗證表單中的兩個字段是否相等,驗證規(guī)則是一個字段名;
equal 驗證是否等于某個值,這個值是有前面的驗證規(guī)則定義的;
in 驗證是否在某個范圍之內,前面定義的是一個數(shù)組;
unique 驗證是否唯一,系統(tǒng)會根據(jù)字段目前的值查詢數(shù)據(jù)庫來判斷時候存在相同的值;
同時,系統(tǒng)還內置了一些常用的正則驗證規(guī)則,可以這節(jié)使用,包括:require字段必須,email 郵箱;
currency 貨幣,number 數(shù)字,這些驗證規(guī)則可以直接使用;

驗證時間:(可選)

01.Model:: MODEL_INSERT 或者1新增數(shù)據(jù)時候驗證
02.Model:: MODEL_UPDATE 或者2編輯數(shù)據(jù)時候驗證
03.Model:: MODEL_BOTH 或者3 全部情況下驗證(默認)

5、官方示例:

復制代碼 代碼如下:


protected $_validate  =  array(  
array('verify','require','驗證碼必須!'), //默認情況下用正則進行驗證  
array(name,'','帳號名稱已經存在!',0,'unique',1), // 在新增的時候驗證name字段是否唯一  
array('value',array(1,2,3),'值的范圍不正確!',2,'in'), // 當值不為空的時候判斷是否在一個范圍內  
array('repassword','password','確認密碼不正確',0,'confirm'), // 驗證確認密碼是否和密碼一致  
array('password','checkPwd','密碼格式不正確',0,'function')// 自定義函數(shù)驗證密碼格式 
);

上述內容就是怎么在thinkPHP中實現(xiàn)一個表單自動驗證功能,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI