亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

可以使用此代碼來驗證 $_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 關注
  • 151 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號