如何使用CURL动态创建POST请求?

时间:2015-10-25 14:34:11

标签: php html curl

我使用简单的DOM php解析器抓取了一个网站:

<?php
include 'domparse.php';
$html = file_get_html('http://oceanofgames.com/rebel-galaxy-free-download/');
foreach($html->find('form[action="http://oceanofgames.com/Cloud-VPS-Download.php"]') as $element) 
    echo $element;
?>

我最终得到了类似的东西:

<form action="http://oceanofgames.com/Cloud-VPS-Download.php" target="_blank" method="post"> 
  <p>
    <input type="hidden" name="filename" value="Rebel_Galaxy.zip" /><br /> 
    <input type="hidden" name="filesize" value="2GB" /><br /> 
    <input type="hidden" name="id" value="85.25.103.44" />
  </p> 
  <div align="center"> 
    <input type="image" alt="Download" height="99" src="http://oceanofgames.com/wp-content/uploads/2013/09/button-download.png" width="184" /> 
  </div> 
</form>

我需要使用CURL使用表单的这些凭据为服务器创建一个POST服务器,我不知道该怎么做。请指导我。

我知道手动方式是:

curl --data "filename=Rebel_Galaxy.zip&filesize=2GB&id=85.25" https://example.com/resource

但是,我有很多这样的URL要处理。如何编写php代码来隔离每个元素,然后使用CURL发出POST请求?

我是PHP的新手,所以如果你能保持简单,我们将非常感激:)

1 个答案:

答案 0 :(得分:3)

在CURL中使用POST的最简单方法是:

$url = 'https://example.com/resource';
$data = 'filename=Rebel_Galaxy.zip&filesize=2GB&id=85.25';

$ch = curl_init($url);                                                                      
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
/*curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
        'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0'
    )
);*/   

$server_output = curl_exec ($ch);

echo  $server_output;