フォームを介さず、PHPでPOSTリクエストを送る方法。

PHPでフォームを介さずにGETとPOSTを送信する ネットでPHPからフォームを介さずにPOSTをする方法を調べた際に書いてあるサイトは色々発見できたのですが、どうも自分には分かりづらいところが多かったので、個人的なメモですが、PHPからフォームを介さずにPOSTをする方法を書いて見ます。

フォームを介さず、PHPでPOSTリクエストを送る方法。

まずは分かりやすいGETから書いてみる。

下記のようなフォームからhttp://example.com/index.phpへ送信した場合、
<form method=”GET” action=”http://example.com/index.php”>
<input type=”text” name=”id” value=”1″>
<input type=”text” name=”data” value=”test”>
<input type=”submit” value=”送信”>
</form>

ブラウザーのアドレスバーには以下の様に表示される。
http://example.com/index.php?id=1&data=test

上記をPHPからフォームを介さずGETで送信する場合、fsockopenを利用する。


$server = "example.com"; // 送信したいサーバのアドレス
$port = 80; // HTTPなので80
$timeout = 30; // 接続に失敗した場合の待ち時間

$sock = fsockopen($host, $port, $errno, $errstr, $timeout); // サーバに接続する
if($sock === FALSE){ // 接続に失敗したらメッセージを表示し、終了させる
echo "SOCK OPEN ERROR
"; exit(-1); } // HTTPヘッダ部分の送信になる。 fwrite($sock, "GET http://" . $server . "/index.php?id=1&data=test HTTP/1.0rn"); // ヘッダの終了を通知 fwrite($sock, "rnrn"); fclose($sock);

以上で、GETリクエストがPHPから直接送信可能になる。