Эти вопросы задают после того, как прочитали несколько других.
Не получить доступ к суперглобальному массиву $_GET напрямую
"Не удается получить суперглобальный массив $_SERVER прямо" на Netbeans 7.4 для PHP
Почему filter_input() неполный?
Я загрузил последнюю версию Netbeans 8.0
, и я видел предупреждение
Не удается напрямую получить суперглобальный массив $_REQUEST.
Отлично, я рад, что меня показывают, когда я делаю то, что можно улучшить, поэтому я смотрю на hints
.
Предложение довольно простое.
Вместо этого используйте некоторые функции фильтрации (например, filter_input(), условия с функциями _ *() и т.д.).
Итак, я начинаю искать fliter_input()
, но он еще не реализован для $_REQUEST
. Это похоже на тупик.
Затем я прочитал что-то, что было очень полезно (@bobince) "В начале вашего script, когда вы фильтруете, вы не знаете, где ваш вход будет завершен, так что вы не знать, как избежать этого."
Это напомнило мне, я точно знаю, где мой вход будет в конечном итоге, и точно, для чего он будет использоваться. Итак, я хотел спросить всех, если подход, который я собираюсь взять, по существу safe
.
Я разрабатываю API REST-ish, и я использую $_SERVER['REQUEST_METHOD'];
для определения ресурса, который необходимо вернуть. Я также использую $_REQUEST['resource'];
, который должен содержать все на URI
после /api/
после .htaccess rewrite
.
Вопросы, которые я имею о моем подходе, следующие:
- Если я всегда проверяю
$_SERVER['REQUEST_METHOD'];
на требуемыйGET
PUT
POST
DELETE
(который мне все равно нужно будет делать), действительно ли проблема не связана с вводом? - Должен ли я обращаться к
$_REQUEST['resource'];
с помощьюfilter_input (INPUT_GET, 'resource');
? Когда это будет использоваться только для определения ресурса и где ресурс не может быть определен (например, кто-то пытается добавить вредоносный код), мы просто не найдем ресурс и не вернем статус404 Not Found
. - Есть ли какие-то другие соображения, которые мне нужно учитывать, и я пропустил что-то важное в своем понимании?
Я понимаю, это может показаться большой проблемой для того, что считается только предупреждением, однако, по моему опыту, исправление только ошибок даст вам рабочий код, но исправление предупреждений поможет вам понять , почему код работает.