PHP cURL, заполняющий форму значений, действие не запускается

У меня есть две разные формы для отправки данных. Первая — это форма http, и она отлично работает. Отправить> перенаправить на страницу результатов> вернуть ответ в виде переменной.

Второй живет на странице https, и он просто не работает, что бы я ни пытался. Итак, вот с чем я работаю:

Тег формы первой формы

<form method="post" name="entry_form" action="a_relative_page.asp?start=1">

Тег формы второй формы

<form method="post" novalidate enctype="multipart/form-data" action="https://asubdomain.formstack.com/forms/index.php" class="stuff" id="stuff1234567890">

Обе кнопки совершенно ничем не примечательны, без причудливого JavaScript и выглядят по сути как

<input type="submit">

И вот запрос PHP cURL

    $post_data = http_build_query(
array(
'lots_of'   => 'values_here'
)
);
$url = 'https://asubdomain.formstack.com/forms/a_page_with_form';
$ch = curl_init($url);
$opts = array(
CURLOPT_SSL_VERIFYPEER  => FALSE,
CURLOPT_SSL_VERIFYHOST  => FALSE,
CURLOPT_UNRESTRICTED_AUTH => TRUE,
CURLOPT_VERBOSE => TRUE,
// Above options for debugging because I'm desperate
CURLOPT_CONNECTTIMEOUT  => 30,
CURLOPT_USERAGENT       => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
CURLOPT_RETURNTRANSFER  => TRUE,
CURLOPT_FOLLOWLOCATION  => TRUE,
CURLOPT_POST            => TRUE,
CURLOPT_POSTFIELDS      => $post_data
);
curl_setopt_array($ch, $opts);

//Capture result and close connection
$result = curl_exec($ch);
$debug  = curl_getinfo($ch);
curl_close($ch);

В curl_getinfo нет ничего необычного, кроме ожидаемого ["ssl_verify_result"]=> int(0), который я игнорирую для отладки.
HTTP-код равен 200. Если я отображаю $ result, я вижу, что все значения формы заполнены, но форма никогда не отправляется и, следовательно, никогда не перенаправляется. Если я нажимаю кнопку «Отправить», форма отправляется без проблем и перенаправляется, как ожидается.

Опять же, это не проблема с первой формой, а только со второй. Я предполагаю, что в базовом коде формы есть что-то, что мешает cURL POST отправлять форму, но я не могу этого найти.

РЕДАКТИРОВАТЬ: Я нашел проблему. На формах стека есть два невидимых элемента. Одним из них является поле ввода с именем _submit, которое должно быть установлено в 1. Другое — это идентификатор формы, который является целым числом.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]