前端與後端TP的資料校驗

104828720發表於2019-02-16

前後端資料驗證的區別

  • 前端資料驗證(一般指的是表單驗證):為了提升使用者體驗,減少與後端的互動;但容易被他人修改或刪除,甚至用其他抓包軟體跳過驗證直接向後端傳送資料,安全性低

  • 後端資料驗證:為了保證資料的正確性,不容易被他人修改,安全性高,所以即使沒有前端驗證,也必須要有後端驗證。(必須的)

前端驗證

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一定要寫,否則預設值就是`--請選擇--`

相關文章