[PHP-users 27763] 賢い HTTP_REFERER ?

遠藤 俊裕 endo_t @ nifty.com
2005年 12月 6日 (火) 00:22:51 JST


遠藤と申します。

_SERVER["HTTP_REFERER"] を使ってリンク元を取ろうと思ってます。
が、ちょっと疑問が生じたのでお教え下さい。
例えば、以下のような php ファイルを作成します。
---------------------------
<?
$fp=fopen("aa.txt", "w");
fputs( $fp, $_SERVER["HTTP_REFERER"] . "\n" );
fclose($fp);
?>
---------------------------

これを http://www.exsample2.com/test.php とします。

http://www.example.com/test.html を以下のように作成します。
---------------------------
<HTML><BODY><A HREF="http://www.exsample2.com/test.php">link</A></BODY></HTML>
---------------------------

このリンクをクリックすると、http://www.exsample2.com/ には aa.txt が作られ、
恐らく、http://www.example.com/test.html が記録されています。

次に、http://www.example.com/test.html を以下のように変更します。
---------------------------
<HTML><BODY><A HREF="http://www.exsample2.com/test.html">link</A></BODY></HTML>
---------------------------                        ^^^^

そして、http://www.exsample2.com/test.html は以下のようにします。
---------------------------
<HTML><BODY><script type="text/javascript" src="./test.php"></script></BODY></HTML>
---------------------------
あるいは以下のようにします。
---------------------------
<HTML><BODY><img src="./test.php"></BODY></HTML>
---------------------------

すると、aa.txt には当然のように、
http://www.exsample2.com/test.html
が記録されています。これはこれで当然の事で、私はなんとかして記録
されている文言を
http://www.exsample.com/test.html
にしたいのです。そのためにはどうすれば良いのか?というのが
「このメールの趣旨」
です(^^;
# 2を消せばいいという、マッチ棒クイズみたいなのは無しです(^^;

が、副産物として、もう一つ疑問があるのです。
例えば、引き合いに出してしまって申し訳ないのですが、
http://www.kent-web.com/count/cherry.html
で説明されているカウンタとログの仕組み。
これは perl で書かれていますが、ソースで
	# リンク元URLを取得
	$ref = $ENV{'HTTP_REFERER'};
	$ref =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg;
この様な記述があります。で、さらに、このサンプルにある index.html には
  <td><img src="count.cgi?master"></td>
という記述があります。

ここで、はたと疑問です。
・perl では HTTP_REFERER の取れ方が PHP と違うのか?
・本当にこれで HTTP_REFERER が取れてるのか?
と。

でも、あくまで趣旨は
「html ファイルに何らかの方法で記述し、外部の php を実行し、
 HTTP_REFERER を取りたい」
であって、perl がどうとか、サンプルがどうとか、そういう話では
ありません。でも、疑問は疑問です(^^;
# 試せばいいんですね。でも、試して、上記と同じようになったら
# どうしましょ?なんか、胸の真ん中あたりがむしゃくしゃします。
# でも世の中にはカウンタを提供してログも提供している所もあり
# ます。それはどうやってる?ますます「?」です(例えば「一番
# 星」など)だからこそ、『趣旨』を実現したいのです(^^;

方法論としては
・html ファイルも php ファイルとして扱うように AddType して、
 include しらたよかろー(あ、サーバは apache です)
も「あり」ですが、
<?xml .... ?>
とか出てきてびっくらこきましたので、スマートじゃないのか、と。

なんか、すっごく初心者ちっくな質問ですが、どなたか良い方法をお
教え下さい。

よろしくお願い致します。

-- 
遠藤俊裕 <endo_t @ nifty.com>



PHP-users メーリングリストの案内