Ответ 1
filter_input(INPUT_POST, 'var_name')
вместо $_POST['var_name']
filter_input_array(INPUT_POST)
вместо $_POST
У меня есть предупреждение этого сообщения о Netbeans 7.4 для PHP, в то время как я использую $_ POST, $_ GET, $_ СЕРВЕР....
Не удается напрямую получить суперглобальный массив $_POST
Что это значит? Что я могу сделать, чтобы исправить это предупреждение?
Изменить: Код примера события все еще показывает это предупреждение.
filter_input(INPUT_POST, 'var_name')
вместо $_POST['var_name']
filter_input_array(INPUT_POST)
вместо $_POST
Хотя немного поздно, я столкнулся с этим вопросом, ища решение для той же проблемы, поэтому надеюсь, что это может помочь...
Нашел себя в той же темноте, что и ты. Просто нашел эту статью, в которой объясняются некоторые новые намеки, введенные в NetBeans 7.4, включая этот:
https://blogs.oracle.com/netbeansphp/entry/improve_your_code_with_new
Причина, по которой она была добавлена, заключается в том, что суперглобалы обычно заполняются пользовательским вводом, который никогда не должен слепо доверять. Вместо этого нужно сделать какую-то фильтрацию, и это подсказка. Отфильтруйте суперглобальное значение в случае, если у него есть отравленное содержимое.
Например, где у меня было:
$_SERVER['SERVER_NAME']
Вместо этого я добавил:
filter_input(INPUT_SERVER, 'SERVER_NAME', FILTER_SANITIZE_STRING)
У вас есть filter_input и фильтр doc:
Я согласен с другими респондентами в том, что в большинстве случаев (почти всегда) необходимо дезинформировать ваш вход.
Но рассмотрите такой код (это для контроллера 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();
}
Было бы нецелесообразно применять санитарию здесь (хотя это и не сломало бы ничего).
Итак, следуйте рекомендациям, но не слепо - скорее поймите, для чего они предназначены:)