前後端資料驗證的區別
-
前端資料驗證(一般指的是表單驗證):為了提升使用者體驗,減少與後端的互動;但容易被他人修改或刪除,甚至用其他抓包軟體跳過驗證直接向後端傳送資料,安全性低。
-
後端資料驗證:為了保證資料的正確性,不容易被他人修改,安全性高,所以即使沒有前端驗證,也必須要有後端驗證。(必須的)
前端驗證
-
自己通過JS手動實現
-
使用jquery validate外掛,詳情可以參考
http://www.51xuediannao.com/j…
TP的後端資料驗證——自動驗證
-
TP已經實現了對請求資料進行驗證的功能,自動驗證是TP模型層提供的一種資料驗證方法
-
自動驗證的使用
1、在模型層中定義驗證規則
protected $_validate = array(
array(`username`, `require`, `使用者名稱不能為空`),
array(`username`, `/^w{4,12}$/`, `使用者名稱或密碼錯誤`, self::EXISTS_VALIDATE, `regex`),
array(`password`, `require`, `密碼不能為空`),
array(`password`, `/^[a-zA-Z0-9]{6,18}$/`, `使用者名稱或密碼錯誤`, self::EXISTS_VALIDATE, `regex`),
array(`repassword`, `password`, `使用者名稱或密碼錯誤`, self::EXISTS_VALIDATE, `confirm`),
array(`email`, `email`, `Email格式不正確!`),
array(`hobby`, `1,2,3`, `請選擇一項愛好!`,self::EXISTS_VALIDATE, `in`),
);
2、使用create()方法建立資料物件,使用這個資料物件與資料庫通訊
$postData = $this->create($postData);
//如果$postData為false,說明驗證不通過,請呼叫$this->getError()獲取錯誤資訊
//如果驗證通過,$postData就是一個原本的陣列
PHP中核取方塊、單選框、下拉選單的注意事項
-
核取方塊
checkbox選中了的才會有值;未選中的則沒有值(根本請求不會發出checkbox的name)
<input type="checkbox" name="chk[]" value="0"> <input type="checkbox" name="chk[]" value="1"> <input type="checkbox" name="chk[]" value="2"> <input type="checkbox" name="chk[]" value="3">
全選:
$_POST[`chk`]為array(0=>`0`,1=>`1`,2=>`2`,3=>`3`);
只選擇value=1和3的
$_POST[`chk`]為array(1=>`1`,3=>`3`);
注意:在給checkBox命名時,必須要加”[]” ,但是在接收時不能加”[]” 才能得到值!
-
單選框
radio選中了的才會有值;未選中的則沒有值(根本請求不會發出radio的name)<input type="radio" name="catetype" value="1" />型別1 <input type="radio" name="catetype" value="2" />型別2 <input type="radio" name="catetype" value="3" />型別3 <input type="radio" name="catetype" value="4" />型別4 <input type="radio" name="catetype" value="5" />型別5
注意:每個radio的name值必須相同,獲取時$_POST[`catetype`]
-
下拉選單
<select name="xueli"> <option value="">--請選擇--</option> <option value="內容項二">內容項二</option> <option value="內容項三">內容項三</option> <option value="內容項四">內容項四</option> </select> 注意:第一個“請選擇”的value一定要寫,否則預設值就是`--請選擇--`