Значения URL с $ _REQUEST в PHP - PullRequest
2 голосов
/ 09 декабря 2010

Если я передаю некоторые параметры в URL, это плохая практика - извлекать их, используя $ _REQUEST super globa, а не $ _GET super

Ответы [ 6 ]

3 голосов
/ 09 декабря 2010

Ну, так как вы ожидаете, что они будут входить только в качестве GET переменных, зачем использовать $_REQUEST, а не $_GET?

Проблема с $_REQUEST заключается в том, что если есть переменные GET, POST и / или COOKIE, одна из них переопределит другую в этом суперглобальном элементе. Полу предсказуемо, какие значения вы получите, если попытаетесь получить доступ к $_REQUEST.

3 голосов
/ 09 декабря 2010

Есть несколько проблем с использованием $_REQUEST.

  1. Это может сбить с толку вашего будущего себя и других сопровождающих относительно того, откуда поступают данные.
  2. Это может вызывать коллизии и создавать трудно обнаруживаемые ошибки, в которых вы получаете неправильные данные (поскольку $_REQUEST охватывает $_GET, $_POST и $_COOKIE).

Могут быть и другие, которых я сейчас не помню.

Так что да, это плохая практика.

2 голосов
/ 09 декабря 2010

Можно установить порядок переменных GET POST COOKIE в php.ini, поэтому, если у вас есть переменная POST или COOKIE с тем же именем, переменная GET не будет активной в REQUEST.1002 * Лучше всего просто использовать соответствующий суперглобальный тип данных, к которым вы обращаетесь ... в вашем случае, $ _GET

А иначе вы (или кто-либо еще) не знаете, откуда были полученыс момента использования $ _REQUEST

2 голосов
/ 09 декабря 2010

Нет, это не плохая практика.Единственное, что $_REQUEST будет содержать значения, переданные в GET и POST командах, и COOKIES значения.Поэтому, если вы хотите обрабатывать только значения, переданные в URL, вы, вероятно, захотите использовать $_GET ...

1 голос
/ 09 декабря 2010

Обычно это не проблема. Обычно вы хотите иметь форму / API, доступную для любого метода. Тогда $ _REQUEST - лучший выбор. Вы должны различать функциональность . Если доступ изменяет данные, сделайте его зависимым от $ _POST. Если доступ предназначен исключительно для запросов, то заставьте его использовать только $ _GET.

Использование $ _REQUEST (проблема с фиксацией файлов cookie) имеет некоторые последствия для безопасности, но обычно они раздуваются. В любом случае, он устарел для текущих конфигураций PHP. Так что с крошкой соли - было несколько предыдущих обсуждений на эту тему:

1 голос
/ 09 декабря 2010

Одним из преимуществ $ _GET и $ _POST является то, что вы точно знаете, как ваш скрипт получил параметры. Он также хранит их в отдельных пространствах имен, поэтому $ _GET ['foo'] всегда будет отличаться от $ _POST ['foo'], чего не делает $ _REQUEST.

В конце концов, это выбор дизайна, который зависит от вас, но однажды в будущем вы оглянетесь назад и будете рады, что вы использовали $ _GET вместо $ _REQUEST (если только у вас не было конкретной причины к). Однако следует помнить одну вещь: $ _GET, $ _POST и $ _REQUEST, возможно, содержат данные, управляемые пользователем, поэтому НЕ ДОЛЖНЫ доверять. Всегда санируйте!

...