我的错误处理程序 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")
。这是一个更长、更冗长的验证,但它应该可以消除错误。
我的 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")
。这是一个更长、更冗长的验证,但它应该可以消除错误。