Мне нужна помощь в попытке использовать завиток для отправки данных на страницу и получения результатов после отправки формы.
Я создал простую форму:
<form name="test" method="post" action="form.php"> <input type="text" name="name" size="40" /> <input type="text" name="comment" size="40" /> <input type="submit" value="submit" /> </form>
Кроме того, у меня есть PHP-код для обработки этой формы на той же странице. Все, что он делает, это вернуть значения формы.
Локус, который я использовал, таков:
$h = curl_init(); curl_setopt($h, CURLOPT_URL, "path/to/form.php"); curl_setopt($h, CURLOPT_POST, true); curl_setopt($h, CURLOPT_POSTFIELDS, array( 'name' => 'yes', 'comment' => 'no' )); curl_setopt($h, CURLOPT_HEADER, false); curl_setopt($h, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($h); echo $result;
Когда я запускаю страницу с помощью curl-кода в ней, я получаю содержимое страницы form.php, но она не отображает переменные, которые PHP должен иметь echo'd при отправке формы.
был бы признателен за любую помощь в этом.
Благодарю.
AHHHH после вашего комментария, проблема ясна.
вам нужно включить еще одну переменную POST в ваш массив.
'submitted' => 'submitted'
кнопка отправки также возвращает значение post, если щелкнуто, которое вы проверяете в своей обработке форм PHP.
if ($_POST['submitted']) {
в вашем curl-коде, однако вы не указали переменную post.
если это то, что вы ищете, установите флажок рядом с этим ответом. благодаря!
От чтения двух других ответов и комментариев от OP у меня есть пара идей.
В частности, Комментарий к ОП:
Отправка формы вручную приводит к правильному выходу. PHP, который обрабатывает форму: if (isset ($ _ POST ['submitted'])) {echo $ _POST [имя] ….. и т. Д. И все.
В стандартных условиях ваша основная форма, как указано в исходном вопросе, будет генерировать массив $ _POST следующим образом:
array( 'name' => 'The Name as Entered in the Form' , 'comment' => 'The Comment as Entered in the Form' , 'submit' => 'submit' # From the "Submit" button );
Ваш комментарий предполагает, что какой-то аспект вашего обработчика формы ищет элемент $ _POST, называемый «отправленным».
1) Основная форма, изложенная в вопросе, всегда будет возвращать FALSE для проверки на $ _POST ['submitted'] и, таким образом, инициирует действие ELSE (если присутствует) для этого условного.
2) Ваш CURL Action не устанавливает ни «submit», ни «submit», и снова будет возвращать FALSE для условного.
Поэтому я бы посоветовал вам:
1) Проверьте обработчик формы и посмотрите, какие поля необходимы, каковы их имена и каков их контент.
2) Проверьте свою основную форму и убедитесь, что у нее есть соответствующие поля.
3) Проверьте действие CURL и убедитесь, что он детализирует каждое поле, которое требуется. (Простая проверка будет заключаться в том, чтобы вставить print_r( $_POST );die();
в верхней части обработчика форм и отправить основную форму. Это покажет вам, что именно отправляет форму, чтобы вы могли ее воссоздать в CURL.