[PHP-users 30905] Re: PHP からPOSTして別ページへ飛ぶ方法を探しています
天野 潔
kiyoshi.amano @ nifty.com
2006年 12月 6日 (水) 14:32:55 JST
天野です。
コードの意味は、たとえば http://localhost/test.php にPOSTデータを送る
ときは、サーバに対して以下のコマンドを送るので、このコマンドを php で
作成しているだけです。
/*************************************************
POST http://localhost/test.php HTTP/1.0
Content-Length: <データのバイト数>
Content-Type: application/x-www-form-urlencoded
<POST データ>
/**************************************************
ここで、改行コードは「\r\n」で、ヘッダのデータの間には空白行を入れま
す。
簡単なサンプルを作ってみました。
これで、ブラウザで post.php を呼び出すと、test.php にデータがポストさ
れます。
【post.php】
<?
$host = "localhost";
$port = 80;
$url = "http://localhost/test.php";
$parm = "data=ok";
http_post($host,$port,$url,$parm);
function http_post($host,$port,$url,$parm) {
$response="";
$fp = fsockopen ($host, $port, $errno, $errstr, 30);
if (!$fp) {
echo "${errno}: ${errstr}";
} else {
$len=strlen($parm);
$request = "POST ${url} HTTP/1.0\r\n";
$request .= "Content-Length: ${len}\r\n";
$request .= "Content-Type: application/x-www-form-urlencoded\r\n\r\n";
$request .= "${parm}\r\n";
fputs ($fp, $request);
while (!feof($fp)) {
$response .= fgets ($fp,1024);
}
fclose ($fp);
$data = explode("\r\n\r\n", $response, 2);
header($data[0]);
echo $data[1];
}
}
?>
【test.php】
<?
echo $data;
?>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
天野 潔 <kiyoshi.amano @ nifty.com>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
PHP-users メーリングリストの案内