2012-04-23 103 views
0

我需要驗證表單,因此我正在編寫一個php類來完成此操作。我需要檢查是否已設置$_POST變量以確定是否顯示錯誤消息。所以我已經實現了兩種似乎並不像我預期的那樣工作的方法,因爲即使我將表單留空,它也會被處理,就好像數據已被填充一樣,而我只是不明白。

private function isSubmitted($field) { 
    if (!array_key_exists($field, $_POST)) { 
     return false; 
    } else { 
     return true; 
    } 
} 

private function hasContent($field) { 
    if (!empty($_POST[$field])) { 
     return false; 
    } else { 
     return true; 
    } 
} 
+1

我看不出太多毛病,你發佈的代碼,也許它會是怎麼看待你 – Filype 2012-04-23 08:52:02

回答

3
  1. 即使一個字段留空,它與""(空字符串)作爲其內容提交。因此,array_key_exists將返回true
  2. if not empty return false是你想要做的事情的相反邏輯。
  3. 縮寫您的布爾返回return array_key_exists($field, $_POST);應該被認爲更安全,至少更簡潔。
2
private function hasContent($field) { 
    if (!empty($_POST[$field])) { 
     return true; 
    } else { 
     return false; 
    } 
} 

我認爲你應該做一個小change.you還應該檢查存在數組是否具有價值或者是空的。

+0

更簡潔地調用這些方法有用:return!empty($ _ POST [$ field]); – heximal 2012-04-23 08:55:20

2

我想你可以嘗試這樣的事情

private function isSubmitted($field) { 
    return isset($_POST[$field]); 
} 

private function hasContent($field) { 
    return !empty($_POST[$field]); 
}