Navigation Log - なびろぐ -
1999/10/06

...X680x0 spirit inside...

この日記はGNSで生成しています。
この日記の画像はOPTPiX webDesigner Ver.4で生成しています。

hauN
Go amazon.co.jp

■ご注文リストから■ [一覧]
■Amazonギフト券■ [購入]
GAMEgene Vol.3 [本]
GAMEgene V...
Amazonほしい物リスト


1999/10/06 (水)

Referer

_ ログ採りは「httpdのログから抜き出す」他にも、

  1. ログ採り用CGIをSSIで入れる。
  2. JavaScriptでRefererを返すよう仕込む。
  3. CGI提供。
  4. リンク用タグを日記本文でなくログ採りCGIにし、CGIが本文に飛ばすようにする。

などの方法が考えられます。ウチは1.で、CGIの本を見ればけっこう載っているはず。JavaScriptは知らないので2.はパス、3.はCGI日記システムではよくあることとして、4.の方法。


#!/usr/local/bin/perl
# check referer
# copyright 1999 GORRY.

# 日記ディレクトリ
$DIARY_URI = 'http://www.hoge.org/~funi/diary/';

# REFERERメール先
$MAIL_TO = 'funi@hoge.org';

# 引数格納
@argv = split( '&', $ENV{'QUERY_STRING'} );
foreach $i (@argv) {
  ( $var, $value ) = split( '=', $i );
  $cgi{ $var } = $value;
}

# Refererが無効かどうかを判定
$referer = $ENV{ 'HTTP_REFERER' };
$jumpto = $cgi{ 'j' };
$mail = !0;
$mail = 0 if ( $referer eq "" );            # 空
$mail = 0 if ( $referer =~ $DIARY_URI );    # 自分自身
$mail = 0 if ( $referer !~ "^http\:\/\/" ); # http://で始まっていない

# REFERERが有効ならメール
if ( $mail ) {
  open( S, "|mail -s \"@@REFERER $jumpto\" $MAIL_TO" ) || die "Cannot Mail";
  print S "REFERER: $referer\n";
  print S "JUMP TO: $jumpto\n";
  close( S );
}

# 本文に飛ばす
print "Location: $DIARY_URL$jumpto\n\n";

_ これをdiary/log.cgiで置いておいて、


<A NAME="06" HREF="log.cgi?j=199910.html#06">1999/10/06</A>

_ こんな感じか。ただし、そのまま使うと「100人がReferer参照すると100本メールが飛んでくる」ので注意するべし。


[URL] [View Log()] [Trackback]
Name: Comment:



メールはこちらへ...[後藤浩昭 / Hiroaki GOTO / GORRY / gorry@hauN.org]

「表紙へ戻る」
「会議室」 「最新版」 「なびろぐindex」 「GNSソースを読む」