我傳統上使用filter_var()
功能消毒$_GET
和$_POST
數據,如:何時使用filter_input()與filter_var()?
$foo = filter_var($_GET['foo'], FILTER_SANITIZE_NUMBER_INT);
但是PHP也有一個功能filter_input()
,具有不同的語法來完成同樣的事情:
$foo = filter_input(INPUT_GET, 'foo', FILTER_SANITIZE_NUMBER_INT);
這些只是同義詞嗎?使用一個優勢是否有優勢?
我已經檢查了手冊頁,但是我沒有看到很多不同(只報告/報告錯誤的方式)。語義/最佳實踐,最有意義的是什麼?
'filter_var'接受任何變量,所以你必須自己查找未定義的變量錯誤。 'filter_input'不是使用'$ _GET','$ _POST','$ _COOKIE','$ _ENV'或'$ _SERVER'的原始值,這意味着不會考慮對這些變量所做的任何修改。請參閱https://secure.php.net/manual/en/function.filter-input.php#115086 –
@CharlotteDunois,因此filter_input是filter_var的更具體的情況嗎?看起來奇怪的是,PHP會有另外一種語法不同的功能,所以增加的好處很少。 – Sablefoste