2009-02-06 2 views
-1

Я хочу, чтобы POST-URL использовал CURL и php.сериализуйте форму в POST после получения контента с использованием CURL

На веб-странице есть большая форма, и я не хочу вручную копировать все переменные и помещать ее в мой запрос POST.

Я предполагаю, что должен быть способ сериализации формы автоматически (с использованием DOM или что-то еще), а затем просто изменить любые значения, которые мне нужны.

Я не мог пойти по этому пути, поэтому мне было интересно, будет ли кто-нибудь добр, чтобы помочь.

Итак, есть ли способ автоматической сериализации формы, которая была похоронена в куче содержимого html, который я просто вытащил из URL?

Спасибо за любую помощь, Эндрю

ответ

2
$http = new HttpQueryString(); 
$http->set($_POST); 

curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,$http->get()); 

Требуется PECL pecl_http> = 0.22.0

+0

Как установить PECL pecl_http в ubuntu? –

1

Его не ясно для меня, если вы спрашиваете, как получить форму в браузере на сервер или как поместить в форму размещенную завитка запроса. От php, при условии, что форма размещена выше, это будет так же просто:

curl_setopt ($ handle, CURLOPT_POSTFIELDS, $ _POST);

, хотя данные не проверяются таким образом.

С веб-страницы, не знаете, почему вы сериализуете форму с помощью DOM/Javascript, а не просто отправляете ее через обычную почту?

0

Непонятный вопрос. Похоже, что вы хотите очистить экран, заполнить его, а затем отправить его обратно на страницу, с которой вы ее получили. Это правильно?

Редактировать в ответ на комментарий: Я бы рекомендовал очистить CURL'd HTML с помощью инструмента, такого как Simple HTML DOM (это то, что я использую для соскабливания с PHP). Документация для выбранной вами библиотеки поможет вам определить, как определить поля формы. После этого вам захочется скручивать страницу действия формы, при этом атрибут CURL_POST_FIELDS будет установлен в значения, которые вы хотите передать в форму, urlencode() 'd, конечно.

+0

точно. Я действительно получил переменные, которые мне нужно отправить, используя firebug. (хотя я все еще не могу сделать это автоматически, что я и спрашивал). – Andrew

0

Не уверен, что на самом деле это вопрос, но вы либо желание сделать что-то вроде этого:

$fields_string = http_build_query($data_to_send); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields_string); 

или вы должны смотреть на это:

$html = file_get_html('http://www.thesite.com/thepage.html'); 
foreach($html->find('input') as $element) 
echo $element->name . '<br>'; 
Смежные вопросы