用cURL填写外部表格

时间:2016-01-26 15:00:44

标签: php forms post curl

我正在尝试使用cURL填写并提交外部表单,但实际上我无法填写该字段,我理解为什么。

如何在表单提交后立即查看填写的表单?

我有以下代码:

    <?php

         //create array of data to be posted
           $post_data['fname'] = 'Mario';
           $post_data['lname'] = 'Rossi';
           $post_data['email'] = 'mario@rossi.it';
           $post_data['memberid'] = '1010101010';
           $post_data['mobile'] = '3456789';


         //traverse array and prepare data for posting (key1=value1)

           foreach ( $post_data as $key => $value) {
                   $post_items[] = $key . '=' . $value;
           }

           //create the final string to be posted using implode()

           $post_string = implode ('&', $post_items);

           //create cURL connection
           $curl_connection = 
                   curl_init('http://dennehys.ie/mobile/douglas/formview.php?qstr=dHlwbz0mZGF5PVR1ZXNkYXkmZGF5ZGF0ZT0yMDE2LTAxLTI2JnJuZD0mY2xhc3NzaGVkdWxlPTQ5Mw==');

          //set options
          curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
          curl_setopt($curl_connection, CURLOPT_USERAGENT, 
          "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
          curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
          curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
          curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);

          //set data to be posted
          curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);

          //perform our request
          $result = curl_exec($curl_connection);
          print_r($post_data);
          echo $result;

          //show information regarding the request

          print_r(curl_getinfo($curl_connection));
          echo curl_errno($curl_connection) . '-' . 
            curl_error($curl_connection);

         //close the connection
          curl_close($curl_connection);

     ?>

2 个答案:

答案 0 :(得分:0)

查看您要发布到的页面,表单包含以下行:

<form action="formresponse.php" method="post" data-ajax="false" name="book">

这意味着您要将数据发布到错误的页面,因为该表单中的所有发布数据都会转到formresponse.php。您发送的页面可能与您发布的数据无关。

尝试更改此行:

curl_init('http://dennehys.ie/mobile/douglas/formview.php?qstr=dHlwbz0mZGF5PVR1ZXNkYXkmZGF5ZGF0ZT0yMDE2LTAxLTI2JnJuZD0mY2xhc3NzaGVkdWxlPTQ5Mw==');

为:

curl_init('http://dennehys.ie/mobile/douglas/formresponse.php');

答案 1 :(得分:0)

我更改了行并修复了我的代码,因为有四种隐藏的输入类型,现在代码看起来很有用但我不太确定。

隐藏的输入类型是:

'错字'是一个空字段(我认为该字段为空)

'day'='wednesday'; (你想要上课的那天)

'clsdl'='485'; (班级ID)

'daydate'='2016-01-27'; (班级日期)

当我发送请求时,代码会以成功消息回答我。

现在我无法理解如何在特定时间发送预订课程的请求。

我的意思是,可能在同一天有两个同一项运动的课程,我想指定我想要的课程。

我试图阅读页面的源代码,但我无法理解我该怎么做。