- - PR -
PHP レスポンスヘッダの出力方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-08-28 17:28
あるPHPが呼ばれると、PHPでレスポンスヘッダの出力とHTMLの内容を出力
行わせたいのですがどのように行えばよろしいでしょうか? ##以下の内容 HTTP 200 OK ・ ・ ・ X-Status:00 <html> メッセージ </HTML> よろしくお願いいたします。 |
|
投稿日時: 2005-08-28 19:03
こんにちは。
レスポンスヘッダはちょっと普通には無理っぽいですね。 apache_response_headers() という関数があるようですけど、満足なものは得られないっぽいです。 http://php.s3.to/man/function.apache-response-headers.html 普通じゃないやり方なら、間に何かをかませればいいんじゃないですかね。 GETにしか対応していませんけど、サンプルを作ってみました、後は勝手にいじってください。 使い方 http://map.yahoo.co.jp/address/13/index.html を呼び出す場合は http://server/get_rowdata.php?server=map.yahoo.co.jp&path=/address/13/index.html 等のように呼び出します。 さらに後ろに &mode=html とつければ生のhtmlソースが表示される予定です。 url解析等は面倒くさいので、はしょりました。 これで、事足りるかどうかは分かりませんが、これでダメなら telnetで httpを話すとか 何かツールを作らないとダメだと思います。 サンプル-- get_rowdata.php -- <?php $server=$_GET['server']; $path=$_GET['path']; $mode=$_GET['mode']; $fp = fsockopen($server, 80, $errno, $errstr, 30) or die("fsockopen error !!"); fwrite($fp, "GET ". $path ." HTTP/1.1\r\n"); fwrite($fp, "Host: ". $server ."\r\n"); fwrite($fp, "Connection: Close\r\n"); fwrite($fp, "\r\n"); print "<pre>"; print "<font color=\"red\">"; while(!feof($fp)){ $html = fgets($fp); if (eregi("^\r\n$", $html)){ break; } print htmlspecialchars($html); } print "</font>"; print "</pre>"; print "<hr>"; while(!feof($fp)){ $html = fgets($fp); if ($mode == "html"){ $html = htmlspecialchars($html); } print $html; } fclose($fp); ?> |
|
投稿日時: 2005-08-28 19:17
書き忘れましたが、正規のレスポンスヘッダを返していないので
HTTP 302等が帰ってきた場合にも、ページを移動することなくそのまま表示します。 エンコード等も返していないので、エンコードの違いによる文字化けが発生することもあるかもしれません。 |
|
投稿日時: 2005-08-28 20:02
どんな風に呼ぼうしているのか分かりませんが、
こんな感じじゃだめですかね?未確認 ob_start()とかob_end_flush()とかが必要になるかもしれません <?php if (!headers_sent()) { header("HTTPほげげ"); ・ ・ ・ header("X-Status: 00"); } print "<HTML>\\n"; ・ ・ print "</HTML>\\n"; ?> |
|
投稿日時: 2005-08-29 12:53
説明不足でした。
とあるプロバイダーの課金認証の応答部分を今 PHPで作成しています。なにを行うかですが、 プロバイダーからこちら側のPHPが呼ばれ、ある値が渡されます。 こちらで渡された値の処理が無事完了できれば レスポンスヘッダとその後プロバイダーからユーザに返したい HTML部分を同時に送信を行う事になっています。 |
1