在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和过滤文件:

http://www.php.net/manual/en/function.filter-input.php

http://www.php.net/manual/en/filter.filters.php

我同意其他答复者的看法:在大多数情况下(几乎总是)有必要清理你的意见。

但考虑这样的代码(这是一个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议,而不是盲目的 – 而不是理解为什么他们:)