2014-09-08 4 views
0

Когда я использую POST и GET запросов в то же время, $_SERVER['REQUEST_METHOD'] настроен на POST.

Почему это? Это потому, что все запросы считаются GET в любом случае?

Это просьба, которую я сделал для этого вопроса.

a = $("#AdminAddForm").serialize(); 
jQuery.post('index.php?test=yes', a); 

Оба $ _POST и $ _GET заполняются после этого запроса, и $ _SERVER [ 'REQUEST_METHOD'] на POST.

+1

Это, на мой взгляд, хороший источник: [Tuts +] (http://code.tutsplus.com/tutorials/http-headers-for-dummies--net-8039). Имейте в виду, что просить мнения не соответствует теме. – pid

+0

_ «Когда я использую POST и GET» _ - покажите соответствующий код, где вы это делаете. – CodeCaster

+0

Почему вы считаете, что это требует мнения? Я хочу понять предмет, я предполагаю, что есть один верный ответ. – Lexib0y

ответ

5

HTTP-протокол имеет первую строку, которая называется «строка запроса». Сообщение выглядит следующим образом:

POST http://website.com/route/whatever HTTP/1.1 

... (post body) 

Обратите внимание на обязательную пустую строку между строкой запроса и телом сообщения.

Теперь, когда у вас также есть строка запроса, как это:

POST http://website.com/route/whatever?q=hello HTTP/1.1 

... (post body) 

Вы смешиваете эти вещи:

  • в POST метод;
  • тело POST (содержащее содержимое формы);
  • строка запроса.

запрос HTTP IS POST-но в PHP материал в строке запроса будет в конечном итоге в глобальной переменной $ _GET, тем не менее.

У вас могут быть параметры GET в HTTP POST, поскольку протокол HTTP позволяет смешивать тело POST с строкой запроса.

4

Когда я использую POST и GET запросы одновременно

Это невозможно.

Возможно, вы используете POST-запрос с строкой запроса в URL-адресе.

PHP заполнит $_GET данными из строки запроса, но это не имеет никакого отношения к методу запроса. Это всего лишь одна из странных (неправильных) правил именования PHP.

+0

Для размещения теста я передал данные формы POST и использовал целевой index.php? Test = yes, который я мог читать с помощью $ _GET. – Lexib0y

+3

@ Lexib0y - это запрос POST с строкой запроса в URL-адресе. Ничего общего с GET. Просто PHP, дающий глупые имена вещам '$ _GET', должен называться' $ _QUERY'. – Quentin

+0

Когда в URL-адресе есть только запрос, он не называется GET в HTTP? – Lexib0y

Смежные вопросы