为了账号安全,请及时绑定邮箱和手机立即绑定

可以使用此代码来验证 $_GET 变量吗?

可以使用此代码来验证 $_GET 变量吗?

PHP
桃花长相依 2021-08-28 17:16:05
我正在构建一个使用 GET 参数的页面,我想知道这段代码是否成功评估了下一个条件:$_GET["id"]必须是一个积分器,而$_GET["status"]必须是一个“true”或“假”。$rawId = $_GET["id"];$rawStatus = $_GET["status"];$Id = filter_var($rawId, FILTER_SANITIZE_NUMBER_INT);$Id = filter_var($Id, FILTER_VALIDATE_INT);if (!$Id) {    die();}if ($rawStatus != "true" && $rawStatus != "false") {    die();}
查看完整描述

3 回答

?
aluckdog

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

}


查看完整回答
反对 回复 2021-08-28
?
冉冉说

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 你可以看到这个答案

测试字符串是否可以是布尔值 PHP

如果需要解析值,您可以使用intval()boolval()


查看完整回答
反对 回复 2021-08-28
?
湖上湖

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

}


查看完整回答
反对 回复 2021-08-28
  • 3 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信