[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 メーリングリストの案内