Среди $ _REQUEST, $ _GET и $ _POST, какой из них самый быстрый?

Какой из этих кодов будет быстрее?

$temp = $_REQUEST['s']; 

или

 if (isset($_GET['s'])) { $temp = $_GET['s']; } else { $temp = $_POST['s']; } 

Solutions Collecting From Web of "Среди $ _REQUEST, $ _GET и $ _POST, какой из них самый быстрый?"

$_REQUEST , по умолчанию, содержит содержимое $_GET , $_POST и $_COOKIE .

Но это только значение по умолчанию, которое зависит от variables_order ; и не уверен, что вы хотите работать с файлами cookie.

Если бы мне пришлось выбирать, я бы, вероятно, не использовал $_REQUEST , и я бы выбрал $_GET или $_POST – в зависимости от того, что должно делать мое приложение (то есть того или другого, но не обоих) : вообще говоря:

  • Вы должны использовать $_GET когда кто-то запрашивает данные из вашего приложения.
  • И вы должны использовать $_POST когда кто-то нажимает (вставляя или обновляя или удаляя) данные в ваше приложение.

В любом случае, не будет большой разницы в производительности: разница будет незначительной, по сравнению с остальной частью вашего скрипта.

GET против POST

1) И GET, и POST создают массив (например, array (key => value, key2 => value2, key3 => value3, …)). Этот массив содержит пары ключ / значение, где ключи – это имена элементов управления формой, а значения – это входные данные пользователя.

2) И GET, и POST обрабатываются как $ _GET и $ _POST. Это суперглобалы, что означает, что они всегда доступны независимо от области видимости – и вы можете получить к ним доступ из любой функции, класса или файла без необходимости делать что-либо особенное.

3) $ _GET – это массив переменных, переданных текущему скрипту через параметры URL.

4) $ _POST – это массив переменных, переданных текущему скрипту через метод HTTP POST.

Когда использовать GET?

Информация, отправленная из формы с помощью метода GET, видна всем (все имена переменных и значения отображаются в URL-адресе). GET также имеет ограничения на объем отправляемой информации. Ограничение составляет около 2000 символов. Однако, поскольку переменные отображаются в URL-адресе, можно пометить страницу. Это может быть полезно в некоторых случаях.

GET может использоваться для отправки нечувствительных данных.

Примечание. GET никогда не должен использоваться для отправки паролей или другой конфиденциальной информации!

Когда использовать POST?

Информация, отправленная из формы с методом POST, невидима для других (все имена / значения встроены в тело HTTP-запроса) и не имеет ограничений на количество отправляемой информации.

Кроме того, POST поддерживает расширенные функции, такие как поддержка многочастного двоичного ввода при загрузке файлов на сервер.

Однако, поскольку переменные не отображаются в URL-адресе, закладка страницы невозможно.

$ _GET извлекает переменные из строки запроса или вашего URL.>

$ _POST извлекает переменные из метода POST, такие как (обычно) формы.

$ _REQUEST – это слияние $ _GET и $ _POST, где $ _POST переопределяет $ _GET. Хорошо использовать $ _REQUEST для самостоятельных реквизитов для валидации.

Я бы предложил использовать $_POST и $_GET явно.

Использование $ _REQUEST в любом случае должно быть излишним при правильном дизайне сайта, и в нем есть некоторые недостатки, такие как отказ от открытых атак CSRF/XSS и другие глупости, связанные с хранением данных в URL-адресе.

Разница скоростей должна быть минимальной в любом случае.

Используйте ЗАПРОС. Никто не заботится о скорости такой простой операции, и это намного более чистый код.

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

Полагаю, вчера была $_REQUEST о проблемах с $_REQUEST . Позволь мне найти его.

EDIT : О, хорошо, а не напрямую, но здесь все равно: http://kuza55.blogspot.com/2006/03/request-variable-fixation.html

$ _GET извлекает переменные из строки запроса или вашего URL.>

$ _POST извлекает переменные из метода POST, такие как (обычно) формы.

$ _REQUEST – это слияние $ _GET и $ _POST, где $ _POST переопределяет $ _GET. Хорошо использовать $ _REQUEST для самостоятельных реквизитов для валидации.

 if (isset($_GET['s'])) { $temp = $_GET['s']; } else { $temp = $_POST['s']; } 

Используйте это, потому что он безопаснее и не будет иметь заметной разницы в скорости

независимо от скорости при извлечении данных с использованием $ _GET, $ _ POST или $ _REQUEST

но дело в том, что вы не можете использовать $_GET альтернативу $_POST в некотором случае.

Когда ??

  • когда вы хотите загрузить файл.
  • когда вы не будете показывать данные в URL-адресе.

GET также имеет ограничения на объем отправляемой информации. Ограничение составляет около 2000 символов.

Другое дело, что мало случаев, когда вы не можете получить данные с помощью $_POST

Когда ?

  • когда данные передаются по URL-адресу.

Для службы отдыха

 `GET` - Provides a read only access to a resource. `PUT` - Used to create a new resource. 

нет ничего плохого в использовании $_REQUEST .

Но способ сделать это – явно проверить $ _SERVER ['REQUEST_METHOD'], а не полагаться на то, что $ _POST пуст для GET.

Я бы использовал второй метод, поскольку он более явный. В противном случае вы не знаете, откуда идут переменные.

Зачем вам все равно проверять GET и POST? Разумеется, использование одного или другого имеет смысл.

Я использую только _GET или _POST. Я предпочитаю иметь контроль.

Что мне не нравится в фрагменте кода в OP, так это то, что они отбрасывают информацию о том, какой метод HTTP был использован. И эта информация важна для входной санитарии.

Например, если сценарий принимает данные из формы, которая будет введена в БД, тогда в форме лучше использовать POST ( используйте GET только для идемпотентных действий ). Но если скрипт получает входные данные через метод GET, он должен (обычно) отклоняться. Для меня такая ситуация может потребовать написания нарушения безопасности в журнале ошибок, поскольку это знак, над которым кто-то что-то пытается.

С помощью либо фрагмента кода в ОП эта санация была бы невозможна.

Я бы использовал $_POST и $_GET потому что иначе, чем $_REQUEST их содержимое не влияет variables_order .
Когда использовать $_POST и $_GET зависит от того, какая операция выполняется. Операция, которая изменяет данные, обрабатываемые с сервера, должна выполняться через запрос POST, тогда как другие операции должны выполняться с помощью запроса GET. Чтобы сделать пример, операцию, которая удаляет учетную запись пользователя, не должна выполняться непосредственно после того, как пользователь нажимает на ссылку, а просмотр изображения может быть выполнен по ссылке.

Вы преждевременно оптимизируете. Кроме того, вы должны поразмышлять над тем, следует ли использовать GET для тех вещей, которые вы используете POST-ing, по соображениям безопасности.

Я использую это,

 $request = (count($_REQUEST) > 1)?$_REQUEST:$_GET; 

утверждение проверяется, если $ _REQUEST имеет более одного параметра (первым параметром в $ _REQUEST будет запрос uri, который можно использовать, когда это необходимо, некоторые пакеты PHP не возвращают $ _GET, поэтому проверьте, не превышает ли его более 1-го $ _GET, By default, будет $ _POST.