序列化表单POST使用curl获得内容后,
-
22-08-2019 - |
题
我想用CURL和PHP发布一个URL。
有是网页上的一个大的形式,我不希望所有的变量手动复制,并把它放在我的POST请求。
我猜测,必须有一种方法来自动序列化形式(使用DOM或东西),然后只改变我需要的任何值。
我不能Google我的出路,这一个,所以我不知道会有人好心地帮助。
所以,反正是有自动序列里面埋葬的是在我刚刚从一个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
其他提示
它不是我清楚,如果你问如何获得形式在浏览器向服务器或如何将张贴的形式卷曲的请求。 从PHP,假设的形式贴过,这将是简单:
curl_setopt($处理,CURLOPT_POSTFIELDS,$ _ POST);
虽然没有数据被验证的方式。
从网络侧,不知道你为什么会使用序列化的DOM / JavaScript的形式,而不是通过常规的后只是提交了吗?
不知道是什么真正的问题是,但你既想要做这样的事情:
$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>';
我不明白的问题。这听起来像你想屏幕刮表格,填写它,然后将它张贴回你得到它的页面。是这样吗?
编辑响应于评价:
我建议有喜欢简单HTML DOM的工具刮CURL'd HTML(这是我使用的PHP刮)。您所选择的库的文件将帮助你找出如何识别表单字段。在那之后,你会想卷曲形式的操作页面,与CURL_POST_FIELDS属性设置为你想要传递给表单中的值,urlencode()
'd当然。
不隶属于 StackOverflow