おたむはうぇぶじぇね

ウェブ制作会社に勤めるおたむの創作備忘録

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

Program > PHP

07.08.18 16:17

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)\n");

$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\r\n");

fputs($sock, "Content-Type: application/x-www-form-urlencoded\r\n");

fputs($sock, "Content-Length: " . strlen($data) . "\r\n");

fputs($sock, "User-Agent: PHP/" . phpversion() ."\r\n");

fputs($sock, "\r\n");

fputs($sock, "$data\r\n");

fputs($sock, "\r\n");

fclose($sock);

Tags :: , , ,

Author :: おたむ トラックバック (0)

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