我的错误处理程序不应该返回false

时间:2018-12-22 21:11:26

标签: php error-handling isnumeric

我的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输入时,它返回false告诉它是error=emptyfields。我尝试过切换位置,但是它仍然返回false,现在我迷路了,尽管当我在0以上输入内容时,它会返回true。

1 个答案:

答案 0 :(得分:0)

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

您将需要对第一个if状况更加小心。不只是考虑empty($price),还可以考虑做(empty($price) && $price !== 0 && $price !== "0")。这是一个冗长得多,更冗长的验证,但应消除该错误。