PHP で POST リクエストを送信する

Subodh Poudel 2023年1月30日
  1. PHP で stream_context_create() および file_get_contents() 関数を使用して CURL なしのメソッドを使用して POST リクエストを送信する
  2. PHP で CURL を使用して POST リクエストを送信する
  3. PHP で CURL を使用して POST リクエストを送信するユーザー定義関数を作成する
PHP で POST リクエストを送信する

http_build_query()stream_context_create() および file_get_contents() 関数を使用して、CURL なしのメソッドを使用して PHP で POST リクエストを送信するメソッドを紹介します。

CURL を使用して PHP で POST リクエストを送信する方法を紹介します。CURL は、HTTP リクエストを Web サーバーに送信するために使用されます。CURL モジュールは通常 PHP にプリインストールされています。インストールされていない場合は、手動でインストールして、PHP を使用してサーバーのリクエストを送信する必要があります。

関数を作成して、CURL を使用して PHP で POST リクエストを送信する例を示します。この方法は、2 番目の方法と非常によく似ています。ユーザー定義関数を使用してリクエストを送信します。異なる記事データと URL を提供するコードを再利用できます。

PHP で stream_context_create() および file_get_contents() 関数を使用して CURL なしのメソッドを使用して POST リクエストを送信する

CURL を使用せずに、http_build_query()stream_context_create()file_get_contents() 関数などの関数を使用して、PHP で POST リクエストを送信できます。http_build_query() 関数を使用して、POST リクエストで送信するクエリパラメータを作成できます。http ヘッダー、メソッド、およびコンテンツを指定する配列を作成できます。stream_context_create() 関数を使用して、ストリーミングされたデータを処理します。file_get_contents() 関数は、URL の内容を文字列に読み込みます。$_POST グローバル変数を使用してデータを読み取ります。

たとえば、http_build_query() 関数を作成し、関数内に配列を作成します。キーnameid、および値 Robert1 をそれぞれ配列に作成します。変数 $postdata を使用して関数を割り当てます。HTTP メソッド、ヘッダー、およびコンテンツを指定する配列を作成します。キーmethodheader および content の値を POSTContent-type: application/x-www-form-urlencoded および変数 $postdata として設定します。この配列を別の配列 http 内にラップします。配列を変数 $opts に割り当てます。$optsstream_context_create() 関数のパラメーターとして受け取り、それを変数 $context に割り当てます。file_get_contents() 関数を使用し、最初のパラメーターとして URL http://localhost/request.php を適用します。2 番目と 3 番目のパラメーターとして、ブール値 false と変数 $context を使用します。関数を変数 $result に割り当てて出力します。PHP ファイル request.php を作成し、$_POST 変数を使用して name および id キーをエコーし​​ます。

以下の例では、nameid は POST メソッドを使用して記事されるデータです。request.php ファイルは、$_POST 変数を使用してクエリパラメータを読み取ります。

サンプルコード:

# php 7.*
<?php
$postdata = http_build_query(
    array(
        'name' => 'Robert',
        'id' => '1'
    )
);
$opts = array('http' =>
    array(
        'method' => 'POST',
        'header' => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postdata
    )
);
$context = stream_context_create($opts);
$result = file_get_contents('http://localhost/request.php', false, $context);
echo $result;
?>
# php 7.*
<?php
echo "Name: ". $_POST['name']. "<br>";
echo "ID: ". $_POST['id'];
?>

出力:

Name: Robert
ID: 1

PHP で CURL を使用して POST リクエストを送信する

CURL はクライアント URL の略です。CURL を使用して、PHP スクリプトを介して POST リクエストを送信できます。PHP バージョンでは、さまざまな curl 関数を実行するために curl モジュールが必要です。このメソッドでは、上記のメソッドと同様に http_build_query() 関数を使用してクエリパラメータを作成します。curl_init() 関数を使用して、スクリプトで CURL 接続を初期化できます。curl_setopt() 関数を、CURLOPT_URLCURLOPT_POSTCURLOPT_POSTFIELDS などのいくつかのオプションとともに使用します。これらのオプションは、それぞれ URL を設定し、HTTP POST リクエストをリクエストし、データを POST します。curl_setopt() 関数を使用して URL の内容を返し、curl_exec() 関数を使用して POST リクエストを実行できます。

たとえば、キーnameid、および値 Wayne2 を配列 $fields に作成します。配列を http_build_query() 関数のパラメーターとして使用し、変数 $postdata を関数に割り当てます。curl_init() 関数を使用して CURL 接続を開き、変数 $ch に割り当てます。3つの curl_setopt() 関数を記述し、$ch 変数を 3つの関数すべての最初のパラメーターとして使用します。関数の 2 番目のパラメーターとして、オプション CURLOPT_URLCURLOPT_POST、および CURLOPT_POSTFIELDS をそれぞれ 1 番目、2 番目、および 3 番目の関数に記述します。3つの関数で、3 番目のパラメーターをそれぞれ http://localhost/request.phptrue、および $postdata として設定します。関数 curl_setopt() を呼び出し、最初のパラメーターとして $ch 変数、2 番目のパラメーターとして CURLOPT_RETURNTRANSFER オプション、3 番目のパラメーターとしてブール値 true を使用します。$result 変数から curl_exec($ch) 関数を呼び出し、$result を出力します。最初のメソッドと同じ request.php ファイルを使用します。

サンプルコード:

#php 7.x
<?php
$fields = [
    'name' => 'Wayne',
    'id' => 2,
];
$postdata = http_build_query($fields);
$ch = curl_init()
curl_setopt($ch,CURLOPT_URL, 'http://localhost/request.php');
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
echo $result;
?>

出力:

Name: Wayne 
ID: 2

PHP で CURL を使用して POST リクエストを送信するユーザー定義関数を作成する

URL 入力と POST データを取得して POST リクエストを送信するメソッドを作成できます。この方法でも、2 番目の方法として CURL を使用します。以前と同じようにすべてのカール関数を使用します。このメソッドは、複数の URL とデータにコードを再利用することを目的としています。

たとえば、関数 httpPost() を作成し、変数 $url$data を引数として取ります。curl_init() 関数を使用して curl 接続を開き、変数 $url をパラメーターとして使用します。2 番目のメソッドと同様に、3つの curl_setopt() 関数を使用します。curl_exec() メソッドを使用して POST データを実行します。配列 $data を作成し、キーnameid および値 Scott3 を作成します。http://localhost/request.php を URL として、$data 配列をデータとして、メソッド httpPost() を呼び出します。このメソッドは、上記の 2つのメソッドと同様に request.php ファイルも使用します。

コード例:

#php 7.x
<?php
function httpPost($url, $data){
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($curl);
    echo $response;
}
$data = [
    'name' => 'Scott',
    'id' => 3
];
httpPost('http://localhost/request.php', $data);
?>

出力:

Name: Scott 
ID: 3
著者: Subodh Poudel
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn