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