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

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

$temp = $_REQUEST['s'];

или

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

Ответ 1

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

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

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

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

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

Ответ 2

GET против POST

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

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

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

4) $_POST - это массив переменных, переданных в текущий script с помощью метода HTTP POST.

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

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

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

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

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

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

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

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

Ответ 3

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

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

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

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

РЕДАКТИРОВАТЬ: О, хорошо, а не напрямую, но здесь все равно: http://kuza55.blogspot.com/2006/03/request-variable-fixation.html p >

Ответ 7

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

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

Ответ 8

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

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

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

Ответ 9

Существуют определенные проблемы безопасности, так как хакер может установить cookie, который переопределит значение $ _POST или $ _GET. Если вы обрабатываете конфиденциальные данные, я бы не рекомендовал использовать $ _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.

Ответ 10

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

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

Ответ 11

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

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

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

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

Ответ 12

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

Ответ 13

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

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

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

Ответ 14

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