簡體   English   中英

使用CURL獲取內容后將表單序列化為POST

[英]serialize form to POST after getting content using CURL

我想使用CURL和php發布URL。

網頁上有一個大表格,我不想手動復制所有變量並將其放入我的POST請求中。

我猜測必須有一種方法可以自動序列化表單(使用DOM或其​​他方法),然后僅更改我需要的任何值。

我無法通過谷歌搜索我的出路,所以我想知道是否有人會提供幫助。

因此,是否有任何方法可以自動序列化隱藏在我剛從URL提取的一堆html內容中的表單?

謝謝你的幫助,安德魯

$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

如果您要問如何在瀏覽器中將表單獲取到服務器,或者如何將張貼的表單放入curl請求中,則對我來說還不清楚。 從php,假設表單已發布,則非常簡單:

curl_setopt($ handle,CURLOPT_POSTFIELDS,$ _POST);

盡管沒有數據以這種方式驗證。

從網絡方面,不知道為什么要使用DOM / Javascript序列化表單,而不是僅僅通過普通的帖子提交?

我不明白這個問題。 聽起來好像您想對表單進行屏幕抓取,填寫,然后將其回發到從中獲取的頁面。 那正確嗎?

編輯以回應評論:我建議使用簡單HTML DOM之類的工具來刮除CURL的HTML(這就是我用PHP進行刮除的方式)。 您所選擇的庫的文檔將幫助您弄清楚如何識別表單字段。 之后,您將希望卷曲表單的操作頁面,並將CURL_POST_FIELDS屬性設置為您想要傳遞給表單的值urlencode() 'd。

不確定真正的問題是什么,但是您要么想做這樣的事情:

$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>';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM