我想知道是否有可能得到一個變量,無論是在POST或GET,然後使用filter_input()來消毒它。如何在使用filter_input的同時檢查POST和GET數據?
起初我以爲$var = filter_input(INPUT_POST | INPUT_GET, "var", FILTER_SANITIZE_STRING)
可能工作,但它並沒有和PHP手冊說明你只能通過一種類型的輸入。
我也試過INPUT_REQUEST
,奇怪的是沒有工作。該函數可以識別它(即不會拋出錯誤,說我在$ input中輸入了錯誤),但它不會得到任何代碼。是的,我知道不要在現場環境中使用INPUT_REQUEST
,我只是純粹測試它是否可行。
目前我做到以下幾點:
$var = filter_input(INPUT_POST, "var", FILTER_SANITIZE_STRING);
if(!$var) $var = filter_input(INPUT_GET, "var", FILTER_SANITIZE_STRING);
但是在PHP中很多事情,往往有更簡單的方式,將做這一切對我來說在一個命令。我想知道這是否是這種情況,我可以將它們組合成一張支票嗎?我在谷歌上進行了粗略的搜索,甚至找不到任何人蔘考這個嘗試,更不用說一個解決方案,所以現在我轉向你很好的人。
爲了什麼目的,你想「消毒」你的字符串? –
爲了確保在GET變量中沒有輸入任何惡意代碼,或者在POST的情況下,某人沒有篡改表單(它很可能是一個隱藏變量)並在其中放置了惡意代碼。 – Styphon
http://php.net/manual/en/function.filter-input.php - 正如所說的,第一個參數是常量之一,沒有數組,沒有||條款。如果你想用一行來完成,你必須建立一個接受數組的用戶函數,然後將所有元素設置爲第一個參數。然而,這似乎是不好的做法,因爲你不知道你的輸入是什麼。 –