2017-05-19 76 views
0

我使用PHP和filter_input功能來過濾GET變量並對其進行驗證:過濾器輸入進行驗證,並要求在PHP

$id = filter_input(INPUT_GET, "id", FILTER_VALIDATE_INT); 

但是當id參數是不存在的網址,上面的語句會使$id NULL。

我想$idfalse時:

  • 它不是一個有效的整數或
  • $_GET["id"]不存在。

這樣,當我想檢查一下$id是否有效時,我只將它與false進行比較。 有沒有一種方法來驗證輸入變量,並檢查其存在與一個單一的陳述?我認爲最好在上述條件下製作$idNULL,所以布爾輸入沒有問題。

目前我使用上面的語句和下面的if塊:

if ($id !== false && $id !== NULL) { 
    // statements to run when $id is valid and present 
} 
+0

零也是一個無效的ID? – Scopey

+0

@Scopey是的,它可能是。我想爲這個問題提供一個通用的解決方案請考慮其他基本數據類型(string,bool,float)。 – Mowji

+2

'isset'對'null'值返回false。但這並不包括'$ id === false'的情況。你可以試試'is_int($ id)',因爲它應該覆蓋所有有效的情況,包括零。 – Scopey

回答

2

圍着它轉:filter_input要麼返回int或兩種可能falsey值之一。爲了測試它是否失敗以任何理由或你有一個int,看看你是否得到int:和null

if (is_int($id)) ... 

的區別之間false進一步讓你辨別究竟是什麼出了問題,如果你願意的話。