【问题标题】:I am trying to fill in a form by using PHP Curl我正在尝试使用 PHP Curl 填写表格
【发布时间】:2018-01-15 15:40:49
【问题描述】:

我正在做一个小项目。对于这个项目需要在第三方网站上填写表格。我用下面显示的代码进行了尝试,有人可以告诉我我做错了什么吗?我正在这个表单上尝试:

        <form name="contactform" method="post" action="send_form_email.php">
        <table width="450px">
        <tr>
         <td valign="top">
          <label for="first_name">First Name *</label>
         </td>
         <td valign="top">
          <input  type="text" name="first_name" maxlength="50" size="30">
         </td>
        </tr>
        <tr>
         <td valign="top">
          <label for="last_name">Last Name *</label>
         </td>
         <td valign="top">
          <input  type="text" name="last_name" maxlength="50" size="30">
         </td>
        </tr>
        <tr>
         <td valign="top">
          <label for="email">Email Address *</label>
         </td>
         <td valign="top">
          <input  type="text" name="email" maxlength="80" size="30">
         </td>
        </tr>
        <tr>
         <td colspan="2" style="text-align:center">
          <input type="submit" value="Submit"> 
         </td>
        </tr>
        </table>
        </form>

这是我的 PHP 代码

$url = '[domain]';
$fields = array(
'lname' => urlencode($_POST['$last_name']),
'fname' => urlencode($_POST['$first_name']),
'title' => urlencode($_POST['$title']),
'company' => urlencode($_POST['$institution']),
'age' => urlencode($_POST['$age']),
'email' => urlencode($_POST['$email']),
'phone' => urlencode($_POST['$phone'])
);

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);

感谢您的帮助!

【问题讨论】:

  • 有错误提示吗?
  • 为什么将CURLOPT_POST设置为字段数?这只需要一个布尔值。
  • @Adam 没有错误信息
  • @iainn 甚至它的布尔值只要大于 0 的数字就可以工作。

标签: php forms curl post


【解决方案1】:

尝试这样查看 curl 错误:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
if(curl_errno($ch)){
    echo 'Request Error:' . curl_error($ch);
}else var_dump($result);

另外,考虑使用 http_bulid_query 来代替这种混乱。

$data = array(
    'foo' => 'bar',
    'baz' => 'boom',
    'cow' => 'milk',
    'php' => 'hypertext processor'
);

echo http_build_query($data) . "\n";

【讨论】:

  • 我试过了,但是当我在我的mac上执行时它只显示字符串(800)和网站的html代码。
  • 使用echo而不是var_dump,表示请求已发送。
  • 完全没有错误。我不明白为什么它不起作用。
  • 没有错误所以它正在工作,你说它显示字符串 800 所以结果是一个具有 800 字符强度的字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-20
  • 1970-01-01
相关资源
最近更新 更多