CURL kullanarak içerik aldıktan sonra POST form serialize

4 Cevap php

Ben CURL ve php kullanarak bir URL POST istiyorum.

Orada web sayfasında büyük bir formudur ve elle tüm değişkenleri kopya ve benim POST isteği koymak istemiyorum.

Ben orada tahmin ediyorum (DOM veya bir şey kullanarak) otomatik olarak formu serialize ve sonra sadece ne gerekiyorsa değerleri değiştirmek için bir yol olmalıdır.

Kimsenin nezaketini yardımcı olacağını bu yüzden merak ediyorum bu bir çıkış yolumu google olamazdı.

Yani, otomatik olarak ben sadece bir URL'den çekti html içeriğinin bir demet gömülü bir form serialize için yine de var mı?

Thanks for any help, Andrew

4 Cevap

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

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

PECL gerektirir pecl_http> = 0.22.0

Its not to clear to me if you are asking how to get the form in the browser to the server or how to place the posted form in the curl request. From php, assuming the form posted over, it would be as simple as:

curl_setopt ($ kolu, CURLOPT_POSTFIELDS, $ _POST);

hiçbir veri bu şekilde doğrulanmış olsa.

Web tarafında, emin neden sadece normal posta yoluyla göndermeden aksine, DOM / Javascript kullanarak formu serialize olmaz?

Emin soru gerçekten, ama sen de böyle bir şey yapmak isteyen konum değil:

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

veya bu içine bakmak gerekir:

$html = file_get_html('http://www.thesite.com/thepage.html');
foreach($html->find('input') as $element) 
echo $element->name . '<br>';

Ben soruyu anlamıyorum. Eğer bir form ekran kazımak onu doldurun, ve sonra geri aldım sayfaya POST istediğiniz gibi geliyor. Bu doğru mu?

Edit in response to comment: I'd recommend scraping the CURL'd HTML with a tool like Simple HTML DOM (that's what I use for scraping with PHP). The documentation for your library of choice will help you figure out how to identify the form fields. After that, you'll want to curl the form's action page, with the CURL_POST_FIELDS attribute set to the values you want to pass to the form, urlencode()'d of course.