3 回答
TA贡献1847条经验 获得超7个赞
您可以使用 is_int 和 is_bool 来实现这一点。在执行此操作之前,请确保您还检查是否设置了 $_GET 变量以避免潜在的通知
$rawId = (isset($_GET["id"]) ? $_GET["id"] : null);
$rawStatus = (isset($_GET["status"]) ? $_GET["status"] : null);
if (!is_int($rawId)) {
//handle
}
if (!is_bool($rawStatus)) {
//handle
}
TA贡献1877条经验 获得超1个赞
如果您需要检查 $rawId 和 $rawStatus 的类型,您可以这样做
is_integer($rawId); // return true if $rawId is integer
is_bool($rawStatus); // return true if $rawStatus is boolean
要检查 $rawId 是否只有数字,您可以这样做
is_numeric($rawId)
要检查 $rawStatus 是否为 bool 你可以看到这个答案
如果需要解析值,您可以使用intval()和boolval()
TA贡献2003条经验 获得超2个赞
FILTER_SANITIZE_NUMBER_INT允许.,+和-,您可能不想包含它们。使用FILTER_VALIDATE_INT将定期检查整数细,不过请记住,这将返回false了0。如果您希望您的 ID 也包含0,那么您需要明确检查这一点:
$Id = filter_var($rawId, FILTER_VALIDATE_INT) === 0 || filter_var($rawId, FILTER_VALIDATE_INT));
假设您想$rawStatus成为true/的文字字符串false,那么您目前覆盖它的方式可能是最佳方法,尽管听起来您正在尝试在此处进行布尔检查。在这种情况下,你可以简单地检查了存在的$rawStatus,使用缺乏它的存在表示一个falsy值:
if ($rawStatus)
正如您在评论中提到的,您确实需要检查两者是否都设置为isset()... 但您还需要检查这些值是否为空。这可以通过!empty().
我还建议仅在已知有效状态下进行,而不是die()在已知无效状态下进行调用。
将所有这些放在一起,您将得到如下所示的内容:
$rawId = null;
if (isset($_GET["id"]) && !empty($_GET["id"])) {
$rawId = $_GET["id"];
}
if (isset($_GET["status"]) && !empty($_GET["status"])) {
$rawStatus = $_GET["status"];
}
$Id = filter_var($rawId, FILTER_VALIDATE_INT) === 0 || filter_var($rawId, FILTER_VALIDATE_INT);
if ($Id && $rawStatus) {
// Logic
}
- 3 回答
- 0 关注
- 127 浏览
添加回答
举报