1. ホーム
  2. php

[解決済み] CURLOPT_POST vs. CURLOPT_POSTFIELDS: CURLOPT_POSTオプションは必要ですか?

2022-02-14 20:39:35

質問

を初めて利用します。 cURL をPHPで作成しました。curlオプションの使い方について質問があります。

ルート www にある test1.php と test2.php という2つのスクリプトファイルを考えてみましょう。 Ubuntu 12.04 LTS . PHPのlibcurlのバージョンは 7.22.0 .

test1.phpの内容

<?php
    $ch = curl_init();
    $post_data = array(
        'firstname' => 'John',
        'lastname' => 'Doe'
    );
    curl_setopt($ch, CURLOPT_URL, 'localhost/test2.php');
    curl_setopt($ch, CURLOPT_POST, TRUE);   //is it optional?
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    curl_exec($ch);
    curl_close($ch);
?>

test2.phpの内容

<?php 
    var_dump($_POST);
?>

ブラウザでtest1.phpを実行すると、結果が掲載されているのが確認できます。ここで、以下を含むcurlオプションを削除すると CURLOPT_POST この例では、まだ動作します。たとえ CURLOPT_POST をfalseにすると、投稿が実行され、結果が表示されます。ということは CURLOPT_POST は必要ないのでしょうか?見た目はオプション CURLOPT_POSTFIELDS を経由してデータを送信します。 POST を使用せずに CURLOPT_POST オプションで指定します。を印刷すると $_SERVER で、リクエストメソッドは常に POST (オプションの有無にかかわらず CURLOPT_POST ).

の正確な使用方法をどなたか教えてください。 CURLOPT_POST オプションはありますか?を介してデータを送信するために必要なのでしょうか? POST ?

解決方法は?

ご指摘の通りです。 curlopt_postfields を意味します。 CURLOPT_POST . を使用する必要はありません。 CURLOPT_POST を使用しながら curlopt_postfields . この場合、リクエストメソッドは常にPOSTに設定されます。

にしたい限り、これはあなたの場合であることに注意してください。 POST リクエスト .

になりたくない場合は、そのようにします。 POST リクエスト が設定されています。 curlopt_postfields は、こちらの関連Q&Aをご覧ください。