Действие формы с параметрами - параметры не находятся в $ _GET или $ _POST - PullRequest
1 голос
/ 16 февраля 2012

Я работаю над повторной реализацией REST API, для которого клиент не имеет исходного кода и теряет доступ к серверу ...

Я обнаружил, что вызывающий абонент отправляет сообщения, но без опубликованных данных. Все параметры указаны в URL-адресе или в том, что было бы действием, если бы это была форма публикации.

Вот так:

"POST http://foo.com/api/rest/?method=users.add_user&token=foo&section=bar&group=baz HTTP/1.1" 200 605 "-" "-" 

К моему удивлению, эти параметры отсутствуют ни в $ _GET, ни в $ _POST, а доступны только в $ _REQUEST.

Я что-то здесь упускаю? Почему они не находятся в $ _GET как часть URL-адреса? Очевидный ответ: «потому что это POST, поэтому GET не определен»?

Может ли кто-нибудь рассказать мне о моих неправильных представлениях об этих суперглобалах?

1 Ответ

2 голосов
/ 16 февраля 2012

$ _ GET и $ _POST пусты, потому что вы используете протокол POST, но отправляете переменные через метод GET (кодируя их в URL).

PHP находит используемый метод POST, поэтому он устанавливает нулевую информацию в переменной $ _GET, а затем анализирует переменные, отправленные в данных POST формы, в переменную $ _POST, т.е.

С другой стороны, переменная $ _REQUEST работает по другому механизму, где она будет анализировать все переменные из запроса, независимо от того, были ли они получены из файлов cookie, составных данных, публикации, получения и т. Д. Именно поэтому вы видите их там.

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

...