在Netbeans 7.4 for PHP中警告“不要直接访问Superglobal $ _POST数组”
我有这个消息警告Netbeans 7.4的PHP,而我正在使用$ _POST , $ _GET , $ _SERVER ,….
不要直接访问超全局$ _POST数组
这是什么意思? 我能做些什么来纠正这个警告?
编辑:事件示例代码仍显示此警告。
filter_input(INPUT_POST, 'var_name')
而不是$_POST['var_name']
filter_input_array(INPUT_POST)
而不是$_POST
虽然有点晚了,但是在search解决scheme时遇到了同样的问题,所以我希望可以有任何帮助。
发现自己和你一样黑暗。 刚刚发现了这篇文章,它解释了NetBeans 7.4中引入的一些新提示,其中包括:
https://blogs.oracle.com/netbeansphp/entry/improve_your_code_with_new
它之所以被添加,是因为超级全球通常充满了用户input,而不应该被盲目信任。 相反,应该进行某种过滤,这就是提示所暗示的。 过滤全局值,以防内容中毒。
例如,我有:
$_SERVER['SERVER_NAME']
我已经把:
filter_input(INPUT_SERVER, 'SERVER_NAME', FILTER_SANITIZE_STRING)
你在这里有filter_input和过滤文件:
我同意其他答复者的看法:在大多数情况下(几乎总是)有必要清理你的意见。
但考虑这样的代码(这是一个REST控制器):
$method = $_SERVER['REQUEST_METHOD']; switch ($method) { case 'GET': return $this->doGet($request, $object); case 'POST': return $this->doPost($request, $object); case 'PUT': return $this->doPut($request, $object); case 'DELETE': return $this->doDelete($request, $object); default: return $this->onBadRequest(); }
在这里应用消毒不是很有用(虽然它也不会破坏任何东西)。
所以,按照build议,而不是盲目的 – 而不是理解为什么他们:)