PHP で HTTP メソッドの POST を利用する (fsockopen)

user-pic
0
HTML のフォームを利用せずに、PHP から Web サーバに対しデータを POST する方法。
とあるシステムの開発で必要になったので、調べてみた。


PHP で行う場合は fsockopen 関数を利用し、ソケット接続。最低限 HTTP ヘッダの Content-TypeContent-Length を記述し、送信するデータは urlencode 関数でエンコード。複数の引数を渡す場合は GET と同じように&区切りでデータを記述。

データ受信側は通常通り $_POST["hoge"] で受け取れる。

$sock = fsockopen("www.foo.com", 80, $errno, $errstr, 30);
if (!$sock) die("$errstr ($errno)");
$data = "df=" . urlencode($df) . "&";
$data .= "hn=" . urlencode($hn) . "&";
$data .= "dt=" . urlencode(date("Y-m-d H:i"));
fputs($sock, "POST /system/hoge.php HTTP/1.0");
fputs($sock, "Content-Type: application/x-www-form-urlencoded");
fputs($sock, "Content-Length: " . strlen($data) . "");
fputs($sock, "User-Agent: PHP/" . phpversion() ."");
fputs($sock, "");
fputs($sock, "$data");
fputs($sock, "");
fclose($sock);

トラックバック(0)

トラックバックURL: http://www.otamu.com/cgi/mt-tb.cgi/7

このブログ記事について

このページは、おたむが2007年9月15日 23:38に書いたブログ記事です。

ひとつ前のブログ記事は「PHP-Java-Bridge + RedHat EL es4 ソースインストール」です。

次のブログ記事は「30秒ごとにクーロンを設定する crontab 記述方法」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。