У меня есть это предупреждение в Netbeans 7.4 для PHP, когда я использую $ _POST , $ _GET , $ _SERVER , ....
Не обращаться напрямую к суперглобальному массиву $ _POST
Что это означает? Что я могу сделать, чтобы исправить это предупреждение?
Изменить: пример кода события по-прежнему показывает это предупреждение.
php
netbeans
superglobals
netbeans-7.4
Kannika
источник
источник
Ответы:
filter_input(INPUT_POST, 'var_name')
вместо$_POST['var_name']
filter_input_array(INPUT_POST)
вместо$_POST
источник
$name = filter_input(INPUT_POST, $_POST["name"]);
.filter_input(INPUT_POST, 'var_name', FILTER_SANITIZE_NUMBER_INT)
Хотя немного поздно, я столкнулся с этим вопросом при поиске решения той же проблемы, поэтому я надеюсь, что это может помочь ...
Оказался в той же тьме, что и ты. Только что нашел эту статью, в которой объясняются некоторые новые подсказки, представленные в NetBeans 7.4, в том числе этот:
https://blogs.oracle.com/netbeansphp/entry/improve_your_code_with_new
Причина, по которой он был добавлен, заключается в том, что суперглобальные файлы обычно заполняются пользовательским вводом, которому никогда не следует слепо доверять. Вместо этого должна быть сделана какая-то фильтрация, и это то, что подсказывает намек. Отфильтруйте суперглобальное значение, если оно содержит отравленный контент.
Например, где у меня было:
Вместо этого я поставил:
У вас есть документ filter_input и Filters здесь:
http://www.php.net/manual/en/function.filter-input.php
http://www.php.net/manual/en/filter.filters.php
источник
Я согласен с другими ответчиками, что в большинстве случаев (почти всегда) необходимо дезинфицировать Ваш ввод.
Но рассмотрим такой код (он для REST-контроллера):
Применять здесь дезинфекцию было бы не очень полезно (хотя это тоже ничего не сломало бы).
Так что следуйте рекомендациям, но не вслепую - лучше разбирайтесь, зачем они нужны :)
источник
Просто используйте
filter_input (INPUT_METHOD_NAME, 'var_name') вместо $ _INPUT_METHOD_NAME ['var_name'] filter_input_array (INPUT_METHOD_NAME) вместо $ _INPUT_METHOD_NAME
например
вместо того
И использовать
вместо того
NB: применимо ко всем остальным суперглобальным переменным.
источник
Вот часть строки в моем коде, которая вызвала предупреждение в NetBeans:
После долгих исследований и наблюдения за миллионом способов фильтрации этого массива я нашел простой. И мой код работает, и NetBeans доволен:
источник