首頁  >  文章  >  後端開發  >  thinkPHP 表單自動驗證功能

thinkPHP 表單自動驗證功能

WBOY
WBOY原創
2016-08-08 09:32:171080瀏覽

昨天晚上我們老大叫我弄表單自動驗證功能,愁了半天借鑒了很多官網的知識,才出來,誒,總之分享一下我自己的成果吧!

thinkphp 在Model基底類別為我們定義了自動驗證的函數和正規表示式,我們只需要在對應的資料庫表的模型類別下建立$_validate屬性就可以了。

1、我們找到Model基底類,可以看到 protected $_validate       = array();  // 自動驗證定,它是陣列類型的,下面在對應資料模型檔案定義它;

2、

public <span>function</span><span> CheckVerify($verify) {

   </span><span>if</span> (md5($verify) != Session::get('verify')) <span>return</span> <span>false</span><span>;
        </span><span>return</span> <span>true</span><span>;
}</span>

//自動驗證

   protected $_validate =<span> array(
        array(</span>"title", "require", "标题必须!"<span>),
        array(</span>'categoryId', 'require', "类别必须!"<span>),
        array(</span>'content', 'require', "内容必须!"<span>),
        array(</span>'verify', 'require','验证码必须!'<span>),
        array(</span>'verify', 'CheckVerify', '验证码错误!', 0, 'callback'<span>)
    );</span>


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

4、參數解釋:

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

 1 $validate =<span> array(
 </span>2 
 3             'require'=> '/.+/'<span>,
 </span>4 
 5             'email' => '/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/'<span>,
 </span>6 
 7             'url' => '/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/'<span>,
 </span>8 
 9             'currency' => '/^\d+(\.\d+)?$/'<span>,
</span>10 
11             'number' => '/^\d+$/'<span>,
</span>12 
13             'zip' => '/^[1-9]\d{5}$/'<span>,
</span>14 
15             'integer' => '/^[-\+]?\d+$/'<span>,
</span>16 
17             'double' => '/^[-\+]?\d+(\.\d+)?$/'<span>,
</span>18 
19             'english' => '/^[A-Za-z]+$/'<span>,
</span>20 
21         );<br>

提示訊息: 用來驗證失敗後的提示訊息定義(必須)、
驗證條件:(可選)
驗證條件的規則有三條:
Model::EXISTS_TO_VAILIDATE 或0 存在欄位就驗證(預設)
Model: :MUST_TO_VALIDATE 或1 必須驗證
Model::VALUE_TO_VAILIDATE或2 值不為空的時候驗證
附加規則:
regex 正規驗證,說明前面的那個驗證規則是一個正規表示式;
function 使用函數驗證,說明前面的那個驗證規則是一個正規表示式;
function 使用函數驗證,說明前面的那個驗證是個函數名稱;
callback 使用方法驗證,說明驗證規則是一個Model類別的方法;
confirm 驗證表單中的兩個欄位是否相等,驗證規則是一個欄位名稱;
equal 驗證是否等於某個值,這個值是有前面的驗證規則定義的;
in 驗證是否在某個範圍之內,前面定義的是一個數組;
unique 驗證是否唯一,系統會根據字段目前的值查詢資料庫來判斷時候存在相同的值;
同時,系統也內建了一些常用的正規驗證規則,可以這節使用,包括:require欄位必須,email 信箱;

currency 貨幣,number 數字,這些驗證規則可以直接使用;

驗證時間:(可選)


01.Model:: MODEL_INSERT 或1新增資料時候驗證
02.Model:: MODEL_UPDATE 或2編輯資料時候驗證

03.Model:: MODEL_BOTH 或3 全部驗證(預設)

5、官方範例:
protected $_validate  =<span>  array(   
array(</span>'verify','require','验证码必须!'), <span>//</span><span>默认情况下用正则进行验证   </span>
array(name,'','帐号名称已经存在!',0,’unique’,1), <span>//</span><span> 在新增的时候验证name字段是否唯一   </span>
array('value',array(1,2,3),'值的范围不正确!',2,’<span>in</span>’), <span>//</span><span> 当值不为空的时候判断是否在一个范围内   </span>
array('repassword','password','确认密码不正确',0,’confirm’), <span>//</span><span> 验证确认密码是否和密码一致   </span>
array('password','checkPwd','密码格式不正确',0,’<span>function</span>’)<span>//</span><span> 自定义函数验证密码格式  </span>
);

    也不知道符合我們老大的要求不,總之還算出來了,好辛苦啊! !  大晚上的找程式碼,找案例,求安慰! !

以上就介紹了thinkPHP 表單自動驗證功能,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn