[英]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.