Веб-прокси (PHP & curl), AJAX и многомерный ассоциативный массив $ _POST или $ _SERVER ['QUERY_STRING']? - PullRequest
0 голосов
/ 08 января 2010

У меня есть HTML-форма, которая отправляется через AJAX (плагин jquery Form) в PHP Web Proxy на моем сервере. Веб-прокси использует curl для POST для стороннего скрипта.

В моей html-форме есть входные данные с такими именами, как p [имя_файла], p [имя_имя], c [имя], p [loc], p [loc] [электронная почта], p [loc] [электронная почта] [detail] Имена указаны сторонним приложением.

Когда я использую GET для отправки формы веб-прокси, я могу просто сделать следующее, чтобы успешно передать данные формы в сторонний скрипт внутри запроса curl:

$postvars = $_SERVER['QUERY_STRING'];
curl_setopt ($session, CURLOPT_POSTFIELDS, $postvars);

Вопрос № 1: есть ли что-то «неправильное» в использовании GET для отправки данных формы на мой веб-прокси? Как я уже говорил, он работает нормально и требует меньше кодирования. $ _SERVER ['QUERY_STRING'] содержит именно те данные, которые мне нужно передать третьей стороне через POST, в точно правильном формате.

Вопрос № 2: Если есть веская причина использовать POST для отправки на мой веб-прокси, каков наилучший способ циклически перемещаться по многомерному ассоциативному массиву в $ _POST для динамического построения $ postvars, без необходимости жесткого кода какие-либо ключевые значения?

Примечание. HTML-форма не является критически важной, и представленные ею данные попадают в очередь на утверждение в сторонней службе. Он не вставляется непосредственно в производственные данные.

1 Ответ

0 голосов
/ 08 января 2010

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

Таким образом, вы должны выбрать метод в зависимости от того, что делает ваш запрос. Также обратите внимание, что URL-адреса имеют ограниченную длину, поэтому вы не можете поставить, например, произвольное количество текста в параметре GET.

И после прочтения вашего вопроса полностью (:-D) кажется, что ваш запрос изменяет (в данном случае добавляет) данные, что означает, что использование POST является более правильным способом. Но поскольку вы отправляете его только через GET своему прокси-серверу, а затем через POST в другое приложение, пока оно работает, все в порядке.
Это зависит только от того, какой тип данных вы отправляете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...