我的错误处理程序 return false 在他们不应该的时候

My error handlers return false when they shouldn't

我的 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 错误处理程序键入时,它 returns 错误地告诉它是 error=emptyfields。我已经尝试过切换位置,但它仍然是 returns false,现在我迷路了,尽管当我输入任何高于 0 的内容时它 returns true。

PHP 的 empty() 函数会将值 0"0" 视为空值。因此,即使该值为数字并且设置正确,它仍然会导致不正确的行为。

你需要更加小心你的第一个 if 条件。不只是 empty($price),也许可以考虑做 (empty($price) && $price !== 0 && $price !== "0")。这是一个更长、更冗长的验证,但它应该可以消除错误。