curl, POST, checkbox с одинакоыви именами

sidewinder

Guest
curl, POST, checkbox с одинакоыви именами

Задача: надо получить некие данные с сайта и передать другой программе для обработки. (Человек в этом процессе не участвует). Сервер отдаёт данные по запросу POST.
в форме есть несколько полей типа таких:
<input TYPE="checkbox" NAME="-out" VALUE="2UCAC" CHECKED>
<input TYPE="checkbox" NAME="-out" VALUE="DE(ICRS)" CHECKED>
<input TYPE="checkbox" NAME="-out" VALUE="e_RAdeg" CHECKED>
<input TYPE="checkbox" NAME="-out" VALUE="e_DEdeg" CHECKED>
вот собстевенно как такой запро спередать?
Я делаю так:
PHP:
$ch = curl_init($SERV);
$vars["-to"] 	= 4;
// так все поля зазаю. Потом:
// кроме NAME="-out" их ещё много
curl_setopt($ch, CURLOPT_POSTFIELDS,    $vars);
// дальше собственно сам запрос.
Kак присовить несколько значений одному полю? ("-out"), Kак массив их задать или как?
(Изменять обработчик запросос я не могу)
 

Nirva

Dmitry Polyakov
теперь все то же самое набери в html, нажми сабмит (сделай гет, чтобы было нагляднее) и посмотри, что передано и как передано.
 

antonio

Moderator
Команда форума
В CURL есть такая проблема, я патчил свой модуль курл, действительно, используя курл как модуль РНР можно передать запрос с набором полей, имеющих одинаковые имена методом application/x-www-form-urlencoded, но не методом multipart/form-data, поскольку курл сам выбирает метод передачи в зависимости от типа третьего параметра в curl_setopt ($ch,CURLOPT_POSTFIELDS,$fields); Если третий параметр строка, то юзается метод ...-urlencoded, если массив, то .../form-data. Во втором случае получаем ляпсус, т.к. в массиве могут быть только уникальные ключи. Если же ...urlencoded тип устраивает, то передавай строку аля "par=value&par=value&....."

Альтернативный вариант использовать fsockopen и fputs, fgets +RFC на HTTP 1.0, ручками формировать пост запрос и посылать еге через сокет нужному серваку.
 

sidewinder

Guest
Спасибо, antonio.
Сделал par1=value1&par2=value2&many_names_field=aa,ss,dd,ff&var3=value3
Работает.
 
Сверху