0

これをデバッグしようとしていますが、運がありません。POST データを正しく送信していますか?

if (isset($_POST['chrisBox'])) {

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://www.associates.com/send-email-orders.php");
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $_POST['chrisBox']);
curl_setopt($curl, CURLOPT_HEADER, FALSE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, FALSE);
curl_setopt($curl, CURLOPT_VERBOSE, TRUE);
$ex = curl_exec($curl);
echo 'email';
$email = true;

}
4

3 に答える 3

9

リクエストで送信されるパラメータは$_POST、次の形式である必要があります -

key=value&foo=bar

これには、PHP のhttp-build-query関数を使用できます。配列からクエリ文字列を作成します。

curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($_POST));

パラメータを 1 つだけ渡したい場合でも、それを配列またはオブジェクトでラップする必要があります。

$params = array(
  'stack'=>'overflow'
);

http_build_query($params);     // stack=overflow
于 2012-12-17T20:47:54.637 に答える
3

CURLOPT_POSTFILEDSには、パラメータとしてurlencoded文字列または配列が必要です。PHPマニュアルcurl_setoptをお読みください。例を変更しました。今では、urlencoded文字列を使用しています。

if (isset($_POST['chrisBox'])) {

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, "http://www.associates.com/send-email-orders.php");
    curl_setopt($curl, CURLOPT_POST, TRUE);
    curl_setopt($curl, CURLOPT_POSTFIELDS, 'chrisBox=' . urlencode($_POST['chrisBox']));
    curl_setopt($curl, CURLOPT_HEADER, FALSE);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, FALSE);
    curl_setopt($curl, CURLOPT_VERBOSE, TRUE);
    $ex = curl_exec($curl);
    echo 'email';
    $email = true;
}
于 2012-12-17T20:45:37.967 に答える
0
$ex = curl_exec($process);
if ($ex === false)
{
    // throw new Exception('Curl error: ' . @curl_error($process));
    // this will give you more info
    var_dump(curl_error($process));
}
于 2012-12-17T20:46:46.540 に答える