Я'ве получил это предупреждение в NetBeans 7.4 для PHP в то время как я'м через $_POST, где, параметр$_GET, _SERVER для$, ....
не доступ к Суперглобальным массивом $_POST, где напрямую
Что это значит? Что я могу сделать, чтобы исправить это предупреждение?
Редактировать: пример кода события по-прежнему показывает это предупреждение.
filter_input(INPUT_POST, 'имя_переменной')
вместо $_POST, где['имя_переменной']
<БР/>
filter_input_array(INPUT_POST)
вместо $_POST, где
Хотя немного поздно, Я'вэ наткнулся на этот вопрос в поисках решения той же проблемы, поэтому я надеюсь, что это может помочь...
Нашли себя в той же темноте, чем вы. Просто нашел эту статью, которая объясняет некоторые новые подсказки введен в NetBeans 7.4, в том числе и этот:
https://blogs.oracle.com/netbeansphp/entry/improve_your_code_with_new
Причина, почему он был добавлен потому, что суперглобальные переменные, как правило, заполнены с пользовательского ввода, который должен'Т когда-либо быть слепо доверять. Вместо этого, какая-то фильтрация должна быть сделана, и что's что намек предполагает. Фильтр суперглобальный массив значение в случае, если он имеет некоторые отравлен содержание.
Например, где я была:
$_SERVER['SERVER_NAME']
Я'вэ вместо этого поставить:
filter_input(INPUT_SERVER, 'SERVER_NAME', FILTER_SANITIZE_STRING)
Вы здесь filter_input и фильтры документа:
Я согласен с другими ответами, что в большинстве случаев (почти всегда) надо санировать Ваш вклад.
Но рассмотрим такой код (это для контроллера остальное):
$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();
}
Это не было бы очень полезно применить дезинфекции здесь (хотя он не хотел ничего ломать, либо).
Поэтому, следуйте рекомендациям, но не слепо, а понять, почему они за :)
Просто использовать
filter_input(INPUT_METHOD_NAME, 'имя_переменной') вместо $_INPUT_METHOD_NAME['имя_переменной'] filter_input_array(INPUT_METHOD_NAME) вместо $_INPUT_METHOD_NAME
е.г
$host= filter_input(INPUT_SERVER, 'HTTP_HOST');
echo $host;
вместо
$host= $_SERVER['HTTP_HOST'];
echo $host;
И использовать
var_dump(filter_input_array(INPUT_SERVER));
вместо
var_dump($_SERVER);
Н. Б: применяются ко всем другим супер глобальную переменную