thinkphp自動驗證相關

2021-06-26 18:15:57 字數 1238 閱讀 4292

protected $_validate = array(     

//郵箱驗證,格式,必須

array('email','require','郵箱必須!'),

array('email','email','郵箱格式不正確!'),

//暱稱驗證,格式,必須,唯一

array('nickname','require','暱稱必須!'),

array('nickname','','暱稱已經存在!',0,'unique',3),

array('nickname','/^[a-za-z0-9\_\x-\x]$/u','暱稱不合法!'),

//密保問題驗證

array('question','require','密保問題必須!'),

array('question','/^[a-za-z0-9\_\x-\x]$/u','問題不合法!'),

//密保問題答案驗證

array('answer','require','密保問題必須!'),

array('answer','/^[a-za-z0-9\_\x-\x]$/u','問題不合法!')

//array('value',array(1,2,3),'值的範圍不正確!',2,'in'), // 當值不為空的時候判斷是否在乙個範圍內

);

以上為自動驗證的靜態方式的寫法,要注意的是:

1.php中文驗證方式為  

\x-\x //不要忘記u引數 小寫 表示uttf-8格式驗證 這個是關鍵,如果你的前台是utf-8的話
2.現在來說說unique 和最後乙個引數,首先說我遇到的問題:

在唯一性一欄 發現無法驗證 然後資料庫插入失敗 原因是,重複插入,也就是說,確實重複了 但是unique 判斷失效,經過測試其它的條件是成立的,在這個問題糾結了很久,後來想起是不是因為資料庫外來鍵的原因,我這是兩個表同時『插入』,第乙個主表沒問題,後面的問題就來了,於是我把驗證時間改為update時驗證,結果驚喜,成功!原來以為真的成功了 後來隨便輸入測試 發現任意輸入都會提示已存在,無奈進入原始碼探索unique的運作方式看到了這一行**:

if(!empty($data[$this->getpk()]))
想起第二個表中是沒有加主鍵的,於是 隨便加了乙個id主鍵,測試成功,這次真的成功了,但是至於驗證乙個欄位的值是否已存在為什麼要主鍵,目前還不知道為什麼,希望有人可以告知!

ThinkPHP 自動驗證

thinkphp 內建了資料物件的自動驗證功能來完成模型的業務規則驗證。自動驗證是基於資料物件的,而大多情況下資料物件是基於 post表單 不是絕對的 建立的。基本的自動驗證功能包括 必須字段 email郵箱格式 唯一性 url位址 數字 兩個字段是否相同 是否等於某個值等。要使用系統的自動驗證功能...

ThinkPHP自動驗證

array 驗證字段,驗證規則,錯誤提示,驗證條件,附加規則,驗證時間 1.驗證字段 需要驗證的表單字段名稱,這個欄位不一定是資料庫字段,也可以是表單的一些輔助字段,例如確認密碼和驗證碼等等。有個別驗證規則和字段無關的情況下,驗證欄位是可以隨意設定的,例如expire有效期規則是和表單字段無關的。2...

thinkphp自動驗證 validate

array 驗證字段,驗證規則,錯誤提示,驗證條件,附加規則,驗證時間 1.驗證字段 需要驗證的表單字段名稱,這個欄位不一定是資料庫字段,也可以是表單的一些輔助字段,例如確認密碼和驗證碼等等。有個別驗證規則和字段無關的情況下,驗證欄位是可以隨意設定的,例如expire有效期規則是和表單字段無關的。2...