Какой из этих кодов будет быстрее?
$temp = $_REQUEST['s'];
или
if (isset($_GET['s'])) { $temp = $_GET['s']; } else { $temp = $_POST['s']; }
$_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
в некотором случае.
Когда ??
GET
также имеет ограничения на объем отправляемой информации. Ограничение составляет около 2000 символов.
Другое дело, что мало случаев, когда вы не можете получить данные с помощью $_POST
Когда ?
Для службы отдыха
`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.