Мои обработчики ошибок возвращают 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"), Это намного более длинная, более подробная проверка, но она должна устранить ошибку.

Другие вопросы по тегам