首页 > 解决方案 > 我的错误处理程序不应该返回 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错误处理程序输入时,它返回 false 告诉它是error=emptyfields. 我尝试过切换位置,但它仍然返回 false,现在我迷路了,尽管当我在上面输入任何内容时,0它都会返回 true。

标签: phperror-handlingisnumeric

解决方案


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

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


推荐阅读