file_get_contentsでPOSTデータ送信

本日からPHPのメモを記述して行こうと思います。

さて早速今日のネタ。

ぎじゅっやさんにてfile_get_contentsでWebページへアクセスする際に、UserAgentを変更する方法が紹介されています。

では、これを応用してfile_get_contentsを使ってPOST形式でデータを送信してみましょう。

参考コード

<?php
//POSTデータ
$data = array(
    "param1" => "data1",
    "param2" => "data2"
);
$data = http_build_query($data, "", "&");

//header
$header = array(
    "Content-Type: application/x-www-form-urlencoded",
    "Content-Length: ".strlen($data)
);

$context = array(
    "http" => array(
        "method"  => "POST",
        "header"  => implode("\r\n", $header),
        "content" => $data
    )
);

$url = "http://localhost/test.php";
echo file_get_contents($url, false, stream_context_create($context));
?>

こんな感じです。

受け取り側のプログラムはprint_r($_POST);とかしてあげれば結果が見られると思います。

重要なのはstream_context_createですね。

headerには適切なヘッダを設定し、contentにPOSTデータを入れてあげればよいです。

この方法なら、curlPEAR(HTTP_Clientとか)等を使用せずにPOSTデータが送信できるようになります。