わたしはアクセスカウンタプログラムを掲載した書籍を二冊所有しています。一冊は『ワンランク上のホームページのためのHTML&CGI入門』(エーアイ出版, 1996)、もう一冊は『CGI/Perl Handbook 2nd edition』(ソフトバンクパブリッシング, 2002)です。どちらもわかりやすくてよい本なのですが、カウンタの実行方法としてSSIのexecコマンドを使っています。わたしが利用しているネットラピュタというプロバイダではSSIのexecコマンドは使用が禁止されている(レンタルサーバサービスでは事情が違うかもしれません)ので、本に載っている方法ではカウンタを表示させることができません。
最近になってカウンタの数字をインラインフレームとして呼び込めばいいと思いつきました。この方法ならば任意のページが主で、カウンタが従である関係を崩さず気軽にカウンタを利用できます。実験したところうまくいったのでここに公開することにしました。(2009年2月8日日曜日)
このカウンタは以下のファイルを使います。※ファイル名は好きなように変えてしまっても動作に影響はありません。ただしその場合はcounter.plを部分的に改変する必要がある場合もあります。
任意のhtmlファイル(カウンタを表示させるページ)
counter.pl(カウンタプログラム本体)
counter.dat(カウンタの数字を記録するファイル)
counter.plとcounter.datは同じディレクトリに置いてください。転送するときはアスキーモードにしてください。別々の場所に置く場合はそれに合わせてcounter.plを改変してください。
カウンタを設置したい任意のページの任意の位置にiframeタグを挿入してください。
例
<iframe src="カウンタプログラムのURI" frameborder="0"></iframe>
counter.datはテキストエディタやワープロソフトで作成し、初期値とする数字と改行だけを記録しておいてください。
任意のhtmlファイル 644
counter.pl 755
counter.dat 666
※このページの末尾にこのカウンタを設置しています。
#!/usr/local/bin/perl
$counterfile = "./counter.dat";
open(FILE, "+<$counterfile");
flock(FILE, 2);
$count = <FILE>;
chomp $count;
$count++;
seek(FILE, 0, 0);
print FILE "$count\n";
flock(FILE, 8);
close(FILE);
print "Content-type: text/html\n\n";
print "<html>\n";
print "<title>カウンタ</title>\n";
print "<body>\n";
print "$count\n";
print "</body>\n";
print "</html>\n";
exit;