PHP で HTTP メソッドの POST を利用する (fsockopen)
-
07.08.18 16:17
-
HTML のフォームを利用せずに、PHP から Web サーバに対しデータを POST する方法。
とあるシステムの開発で必要になったので、調べてみた。
PHP で行う場合は fsockopen 関数を利用し、ソケット接続。最低限 HTTP ヘッダの Content-Type と Content-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);
Author :: おたむ トラックバック (0)
- トラックバックURL: http://www.otamu.com/m_type/mt/mt-tb.cgi/12