cURL POST未提交表单

时间:2018-12-13 14:29:09

标签: php curl

我正在做一个项目,要求之一是自动将表单提交到不定期指定的随机站点

这是我的cURL代码:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url_post);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $dati_post);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);

获取POST参数的代码:

  foreach ($html->find('form[method=post],form[method=POST]') as $forms_post) {
  $n_formPOST++;
  $formPOST_action = $forms_post->action;
   foreach ($forms_post->find('input') as $input) {
     if ($input->type == 'text') {
       $dati_testo[$input->name] = "text";
     } else if ($input->type == 'email' || $input->name == 'email') {
       $dati_random[$input->name] = "emailrandom@gmail.com";
     } else if ($input->type == 'hidden') {
       $dati_random[$input->name] = $input->value;
     } else {
       $dati_random[$input->name] = "random";
     }
   }
   foreach ($forms_post->find('textarea') as $textarea) {
     if ($textarea->disabled != true) {
       $dati_testo[$textarea->name] = "text";
     }
   }
   foreach ($forms_post->find('button') as $bottone) {
     if ($bottone->type == 'submit') {
       $dati_random[$bottone->name] = "random";
     }
   }

问题在于,在某些站点中POST正确完成,并且我收到正确的答案,该答案与手动完成操作所收到的答案相对应。 在其他站点上,似乎未提交该表单。 我已经反复检查了我在cURL中插入的URL,以及通过的数据,如果我手动使用它们,它将起作用。 我什至尝试使用在线执行POST / GET的工具,并传递与我在项目中获得的相同的URL和相同的数据,并且可以正常工作。

url_post由url host + form动作组成。 我不知道我的curl代码是否有问题,考虑到我非常确定要传递给curl的数据对于完成POST是正确的。

数据:

1 个答案:

答案 0 :(得分:1)

您需要使用curl_exec()函数才能执行cURL。它采用$ch参数,例如:

// Execute cURL
curl_exec($ch);

// Close cURL
curl_close($ch);

更多信息here