- PR -

PHP レスポンスヘッダの出力方法

1
投稿者投稿内容
ポーター
ベテラン
会議室デビュー日: 2005/02/03
投稿数: 50
投稿日時: 2005-08-28 17:28
あるPHPが呼ばれると、PHPでレスポンスヘッダの出力とHTMLの内容を出力
行わせたいのですがどのように行えばよろしいでしょうか?

##以下の内容
HTTP 200 OK
 ・
 ・
 ・
X-Status:00

<html>
メッセージ
</HTML>

よろしくお願いいたします。
jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 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);
?>
jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 2005-08-28 19:17
書き忘れましたが、正規のレスポンスヘッダを返していないので
HTTP 302等が帰ってきた場合にも、ページを移動することなくそのまま表示します。

エンコード等も返していないので、エンコードの違いによる文字化けが発生することもあるかもしれません。
koji
常連さん
会議室デビュー日: 2004/11/04
投稿数: 36
お住まい・勤務地: 北海道
投稿日時: 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/02/03
投稿数: 50
投稿日時: 2005-08-29 12:53
説明不足でした。

とあるプロバイダーの課金認証の応答部分を今
PHPで作成しています。なにを行うかですが、

プロバイダーからこちら側のPHPが呼ばれ、ある値が渡されます。
こちらで渡された値の処理が無事完了できれば
レスポンスヘッダとその後プロバイダーからユーザに返したい
HTML部分を同時に送信を行う事になっています。




1

スキルアップ/キャリアアップ(JOB@IT)