сериализовать форму в POST после получения контента с использованием CURL - PullRequest
0 голосов
/ 06 февраля 2009

Я хочу разместить URL с помощью CURL и php.

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

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

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

Итак, есть ли способ автоматически сериализовать форму, которая похоронена в куче HTML-контента, который я только что извлек из URL?

Спасибо за любую помощь, Andrew

Ответы [ 4 ]

2 голосов
/ 11 февраля 2009
$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

1 голос
/ 06 февраля 2009

Мне не понятно, спрашиваете ли вы, как получить форму в браузере на сервер или как разместить опубликованную форму в запросе curl. Начиная с php, если вы разместите форму, это будет просто:

curl_setopt ($ handle, CURLOPT_POSTFIELDS, $ _POST);

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

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

0 голосов
/ 06 февраля 2009

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

$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>';
0 голосов
/ 06 февраля 2009

Я не понимаю вопроса. Звучит так, будто вы хотите отсканировать форму, заполнить ее, а затем отправить обратно на страницу, с которой вы ее получили. Это верно?

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

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