Когда и почему должен $ _REQUEST использоваться вместо $ _GET / $ _POST / $ _COOKIE?

22
задан Anant Singh---Alive to Die 5 June 2015 в 18:40
поделиться

6 ответов

Я никогда не говорил бы.

, Если бы я хотел, чтобы что-то было установлено с помощью различных методов, я кодировал бы для каждого из них, чтобы напомнить мне, что я сделал его тот путь - иначе Вы могли бы закончить с вещами, перезаписываемыми без понимания.

не был Должен он работать как это:

$ _GET = не разрушительные действия (сортировка, записывая действия, запросы)

$ _POST = разрушительные действия (удаление, обновляя)

$ _COOKIE = тривиальные настройки (предпочтения таблицы стилей и т.д.)

$ _SESSION = не тривиальные настройки (имя пользователя, вошел в систему?, уровни доступа)

53
ответ дан Rich Bradshaw 29 November 2019 в 03:35
поделиться

Иногда Вы могли бы хотеть, чтобы тот же сценарий был назван с несколькими различными путями. Форма отправляет, и вызов Ajax приходит на ум. В большинстве случаев, однако, itВґs лучше, чтобы быть явным.

кроме того, см. http://docs.php.net/manual/en/ini.core.php#ini.request-order о том, как другие источники переменных перезаписывают друг друга, если существует коллизия имени.

7
ответ дан Internet Friend 29 November 2019 в 03:35
поделиться

$_REQUEST только ярлык должен препятствовать тому, чтобы Вы тестировали сообщение, добраться и кулинария, если данные могут прибыть из какого-либо из них.

Существуют некоторые ловушки:

  • данные взяты от, ДОБИРАЮТСЯ, POST и наконец COOKIE. Последнее переопределение первое, так быть осторожным с этим.
  • Архитектура REST требует, чтобы разделить POST и ПОЛУЧИТЬ семантику, Вы не можете полагаться $_REQUEST в этом случае.

Тем не менее, если Вы знаете то, что Вы делаете, затем это - просто другой удобный прием PHP.

Я использовал бы его, если бы я хотел быстро обновить var, который может прибыть из нескольких источников. НАПРИМЕР:

  • В Вашем контроллере, для решения, что странице служить, не проверяя, прибывает ли запрос из действия формы или гипертекстовой ссылки.
  • Чтобы проверить, активна ли сессия все еще независимо от пути, идентификатор сессии передается.

4
ответ дан A J 29 November 2019 в 03:35
поделиться

Для ответа, "что происходит, когда все 3 существуют" вопрос ответ, "это зависит".

PHP автозаполняет $ _REQUEST на основе request_order директивы (или variables_order, если request_order отсутствует) в PHP.INI. Значение по умолчанию обычно является "GPC", что означает, ДОБИРАЮТСЯ, загружается сначала, тогда POST загружается (перезапись ДОБИРАЮТСЯ, если существует коллизия), то cookie загружаются (перезапись получают/отправляют, если существует коллизия). Однако можно изменить эту директиву в файле PHP.INI. Например, изменение его к "CPG" заставляет cookie загрузиться сначала, затем отправить, затем добраться.

До, когда использовать его? Я буду повторять чувство "Никогда". Вы уже не доверяете пользователю, итак, почему дают пользователю больше инструментов? Как разработчик, необходимо знать, где Вы ожидаете, что данные прибудут из. Это - все о сокращении Вашей области поверхности атаки.

4
ответ дан Nathan Strong 29 November 2019 в 03:35
поделиться

Когда Вы не уверены, где значения заполняются или когда Вы используете их обоих и хотите циклично выполниться по всем значениям и POST и ПОЛУЧИТЬ методы.

2
ответ дан Sietse 29 November 2019 в 03:35
поделиться

Я использую POST, когда я не хочу, чтобы у людей был легкий доступ к тому, что передается, и я использую, ДОБИРАЮТСЯ, когда я не возражаю против них видящий значение в URL. Я обычно не использую cookie для того, хотя я нахожу, что СЕССИЯ хорошо для сохранения значений (хотя наличие надлежащего реестра является лучшим способом использовать это).

1
ответ дан rg88 29 November 2019 в 03:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: