大家好!我一直在試圖弄清楚爲什麼我的表單驗證不能識別空字段並將它們作爲錯誤返回,這一直很糟糕。PHP沒有讀取表單域爲空
這裏是我用來檢查領域的功能:
function check_required_fields($required_array) {
$field_errors = array();
foreach($required_array as $fieldname) {
if (!isset($_POST[$fieldname]) || (empty($_POST[$fieldname]) && $_POST[$fieldname] != 0)) {
$field_errors[] = $fieldname;
}
}
return $field_errors;
}
然後,我的方式是這樣的過程:
if (isset($_POST['submit'])) { // Form has been submitted.
$errors = array();
// perform validations on the form data
$required_fields = array('client', 'banner', 'district', 'store', 'position', 'first_name', 'last_name', 'email', 'password');
$errors = array_merge($errors, check_required_fields($required_fields, $_POST));
和錯誤的IF語句檢查:
if (empty($errors)) {
$query =
問題是,即使我的字段是空的(我用var_dump($ _ POST)檢查它們)PHP執行$查詢。我認爲這個功能有問題。我希望有人能幫我發現錯誤!
這裏是我的HTML代碼要點:
<form action="registration.php" method="post">
<label for="first_name" class="medium">First Name</label>
<input type="text" name="first_name" class="textbox short_field">
<button type="submit" name="submit" value="submit" class="form-submit-button">SUBMIT</button>
</form>
我也使用下列功能來驗證字符串的長度,它工作得很好:
function check_max_field_lengths($field_length_array) {
$field_errors = array();
foreach($field_length_array as $fieldname => $maxlength) {
if (strlen(trim(mysql_prep($_POST[$fieldname]))) > $maxlength) { $field_errors[] = $fieldname;
}
}
return $field_errors;
}
和
$fields_with_lengths = array('first_name' => 30, 'last_name' => 30, 'email' => 50, 'password' => 30);
$errors = array_merge($errors, check_max_field_lengths($fields_with_lengths, $_POST));
和HTML代碼?你必須在你的表單標籤中包含'method ='POST''。 –
你有'var_dump($ errors)'看看裏面有什麼嗎? –
你的'check_require_fields()'函數只接受一個參數,但你用兩個來調用它。 –