CURL POST не отправляет форму - PullRequest
0 голосов
/ 13 декабря 2018

Я делаю проект, и один из запросов - автоматически отправить форму на случайный сайт, который время от времени указывается

Это мой код 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 выполняется правильно, и я получаю правильный ответ, который соответствует ответу, который я получил бы, выполнив его вручную.На других сайтах кажется, что форма не отправлена.Я неоднократно проверял URL, который я вставляю в cURL, а также данные, которые я передаю, и если я использую их вручную, это работает.Я даже пытался использовать онлайн-инструменты, которые выполняют POST / GET, передавая тот же URL и те же данные, которые я получаю в своем проекте, и это работает.

url_post сделан из действия url host + form.Я не понимаю, если что-то не так в моем коде curl, учитывая, что я почти уверен, что данные, которые я передаю в curl, исправлены для завершения POST.

Данные:

1 Ответ

0 голосов
/ 13 декабря 2018

Вам необходимо использовать функцию curl_exec(), чтобы выполнить cURL.Требуется параметр $ch, например:

// Execute cURL
curl_exec($ch);

// Close cURL
curl_close($ch);

Подробнее здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...