尝试在外部网站上发布到Gravity Form时出现cURL问题

时间:2014-03-21 15:12:01

标签: php html wordpress forms curl

我有两个SEPARATE网站:

  • 网站A:具有重力形式的Wordpress网站。
  • 站点B:一个非Wordpress站点,它包含一个简单的表单 - 来自此表单的数据需要最终到站点A的重力表格(在这个例子中也需要自动提交)。

我目前正在使用cURL发布到外部网站,但我的测试条目都没有显示在Gravity表单中,而curl_exec()只是返回外部网站上页面的整个html。

这是我目前的代码:

<form name="test" method="post">              
<p>First Name: <input type="text" name="firstName" /></p>
<p>Last Name: <input type="text" name="lastName" /></p>
<p>Address: <input type="text" name="address" /></p>
<p>City: <input type="text" name="city" /></p>
<p>State: <select name="state">
    <option value=""></option>
    <option value="Alabama">Alabama</option>
    <option value="Alaska">Alaska</option>
    <option value="Arizona">Arizona</option>
    <option value="Arkansas">Arkansas</option>
    <option value="California">California</option>
    <option value="Colorado">Colorado</option>
    <option value="Connecticut">Connecticut</option>
    <option value="Delaware">Delaware</option>
    <option value="District of Columbia">District of Columbia</option>
    <option value="Florida">Florida</option>
    <option value="Georgia">Georgia</option>
    <option value="Hawaii">Hawaii</option>
    <option value="Idaho">Idaho</option>
    <option value="Illinois">Illinois</option>
    <option value="Indiana">Indiana</option>
    <option value="Iowa">Iowa</option>
    <option value="Kansas">Kansas</option>
    <option value="Kentucky">Kentucky</option>
    <option value="Louisiana">Louisiana</option>
    <option value="Maine">Maine</option>
    <option value="Maryland">Maryland</option>
    <option value="Massachusetts">Massachusetts</option>
    <option value="Michigan">Michigan</option>
    <option value="Minnesota">Minnesota</option>
    <option value="Mississippi">Mississippi</option>
    <option value="Missouri">Missouri</option>
    <option value="Montana">Montana</option>
    <option value="Nebraska">Nebraska</option>
    <option value="Nevada">Nevada</option>
    <option value="New Hampshire">New Hampshire</option>
    <option value="New Jersey">New Jersey</option>
    <option value="New Mexico">New Mexico</option>
    <option value="New York">New York</option>
    <option value="North Carolina">North Carolina</option>
    <option value="North Dakota">North Dakota</option>
    <option value="Ohio">Ohio</option>
    <option value="Oklahoma">Oklahoma</option>
    <option value="Oregon">Oregon</option>
    <option value="Pennsylvania">Pennsylvania</option>
    <option value="Rhode Island">Rhode Island</option>
    <option value="South Carolina">South Carolina</option>
    <option value="South Dakota">South Dakota</option>
    <option value="Tennessee">Tennessee</option>
    <option value="Texas">Texas</option>
    <option value="Utah">Utah</option>
    <option value="Vermont">Vermont</option>
    <option value="Virginia">Virginia</option>
    <option value="Washington">Washington</option>
    <option value="West Virginia">West Virginia</option>
    <option value="Wisconsin">Wisconsin</option>
    <option value="Wyoming">Wyoming</option>
    <option value="Armed Forces Americas">Armed Forces Americas</option><option value="Armed Forces Europe">Armed Forces Europe</option>
    <option value="Armed Forces Pacific">Armed Forces Pacific</option>
    </select></p>
<p>Zipcode: <input type="text" name="zip" /></p>
<p>Email Address: <input type="text" name="email" /></p>
<input type="submit" name="submit" value="submit" />

<?php
$email = urlencode($_POST['email']);
$fname = urlencode($_POST['firstName']);
$lname = urlencode($_POST['lastName']);
$address = urlencode($_POST['address']);
$city = urlencode($_POST['city']);
$state = urlencode($_POST['state']);
$zip = urlencode($_POST['zip']);

$submit_url = "http://location/of/my/gravity/form/";

$data = array(
'f_name'=>$fname,
'l_name'=>$lname,
'add1'=>$address,
'city'=>$city,
'state'=>$state,
'zip'=>$zip,
'email'=>$email,
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $submit_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $data);

$result = curl_exec($ch);
print_r($result);
curl_close ($ch);

?>

1 个答案:

答案 0 :(得分:0)

问题是您没有使用http_build_query

  $data = array(
    'f_name'=>$fname,
    'l_name'=>$lname,
    'add1'=>$address,
    'city'=>$city,
    'state'=>$state,
    'zip'=>$zip,
    'email'=>$email,
    ); 



    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($chAgain, CURLOPT_RETURNTRANSFER, true);
    curl_exec($ch);
    curl_close($ch);