特徴
- ビッグローブをはじめとするWEBサーバでは、CGIは開放していてもSSIは禁止しています。
これを使えば、アクセスカウンタをHTMLに貼り付けたり、アクセス解析用のログをとったり、応用は様々です。
- HTMLはその拡張子(.htmや.html)やMIME形式のヘッダによって、サーバ側もブラウザ側もそれがHTMLであることを認識して
タグを処理して表示するわけです。
- CGIでHTMLを出力する場合は、これをスクリプト内に書いてやることで、ブラウザ側でも
タグを処理して、同じように表示するようにできます。
- CGIで表示されるわけですから、HTMLを出力すると同時にいろいろな処理をさせることが
できます。
- ここではアクセスカウント機能を入れた方法を紹介します。
- しかし、例えば「.../~rescue/」というURLでは「index.html」を読み込むわけです。
ということは、ホームページの名前を「index.cgi」に変えなければならず、いままで「.../~rescue/」で
リンク(公開)している方は「.../~rescue/index.cgi」にするなど面倒だと思います。そこで、
殆どの方が使っていると思われるネットスケープの、フレーム機能を使って擬似的に「index.html」を
表現させる方法をとってみました。
- フレームを応用した処理なので、フレームについて十分理解してご利用ください。
設置方法
index.html -------> フレームを使って擬似的に処理(いままで通りここにリンクする)
index.txt --------> ここにはいままで「index.html」に書いていた内容
index.cgi --------> 「index.txt」を読み込んでHTMLを出力するCGIスクリプト
index.count ------> アクセスカウント数を入れるファイル(あらかじめ数字を入れておきます)
index.html
<html><head><title>
**のホームページ
</title></head>
<frameset rows="100%,*">
<frame src="index.cgi">
<noframes>
<body>
<a href="index.cgi">こちらから入ってください。</a><p>
</body>
</noframes>
</frameset>
</html>
index.txt
<html><head><title>
**のホームページ
</title></head>
<body>
<h1>ようこそ**のホームページへ</h1>
このページには<!--count-->のアクセスがありました。<p>
<a href="****" target="_top">リンク文には必ずターゲット文を入れること</a>
</body>
</html>
index.cgi
#!/usr/local/bin/perl
# ↑このパスはあなたの環境に合わせて設定すること
# HTMLのファイル名を指定する
$html = "index.txt";
# アクセスカウント数を入れるファイルを指定する
# 最初はあらかじめ「0」を必ず入れておくこと
# HTMLにはカウンタ表示する場所に以下の文字列を書いておくこと
#
# このページには<!--count-->のアクセスがありました。
$count_file = "index.count";
# HTMLを読み込んで配列に代入
open(IN,"$html") || die "error\n";
@lines = <IN>;
close(IN);
# 今までのカウンタ数を読み込んで変数に代入
open(DATA,"$count_file") || die "error\n";
while(<DATA>){ $count = $_; }
close(DATA);
# WWWに出力
print "Content-type: text/html\n\n";
foreach $line (@lines) {
$line =~ s/<!--count-->/$count/g; # アクセスカウント数を入れ込む
print "$line";
}
# アクセスカウント処理
$count++;
open(OUT,">$count_file") || die "error\n";
print OUT "$count";
close(OUT);
index.count(カウント開始したい数字)
0
- HTMLはバイナリモードでもアスキーモードでもいいのですが、ここでは「index.txt」は
テキストファイルとして扱っていますので、アスキーモードで処理します。
- ページの内容に<!--count-->を書くことで、その場所にカウントされた数字が挿入されます。
- パーミッションの設定も忘れずに。「index.cgi」は755、「index.count」は666、その他は
644です。
|