Мои обработчики ошибок возвращают false, когда они не должны
У меня есть следующие обработчики ошибок в моем файле PHP:
if (empty($title) || empty($description) || empty($price)) {
header("Location: ../listing1.php?error=emptyfields");
exit();
} elseif (!is_numeric($price)) {
header("Location: ../listing1.php?error=onlynumbers");
exit();
}
Но когда я печатаю в соответствии с is_numeric
обработчик ошибок возвращает ложное сообщение о том, что это error=emptyfields
, Я пробовал переключать позиции, но он все еще возвращает ложь, и теперь я потерян, хотя, когда я набираю что-нибудь выше 0
это возвращает истину.
1 ответ
РНР empty()
функция будет учитывать значения 0
а также "0"
быть пустым. Таким образом, даже если значение является числовым и правильно установлено, оно все равно приведет к некорректному поведению.
Вам нужно быть более осторожным с вашим первым if
состояние. Вместо просто empty($price)
может быть, подумать (empty($price) && $price !== 0 && $price !== "0")
, Это намного более длинная, более подробная проверка, но она должна устранить ошибку.