我想知道是否有可能得到一个变量,无论是在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 - 正如所说的,第一个参数是常量之一,没有数组,没有||条款。如果你想用一行来完成,你必须建立一个接受数组的用户函数,然后将所有元素设置为第一个参数。然而,这似乎是不好的做法,因为你不知道你的输入是什么。 –