MOSHプログラム庫>MOSH Perl/CGI Room

SSIを使わないアクセス・カウンタ

作成の動機

 わたしはアクセスカウンタプログラムを掲載した書籍を二冊所有しています。一冊は『ワンランク上のホームページのためのHTML&CGI入門』(エーアイ出版, 1996)、もう一冊は『CGI/Perl Handbook 2nd edition』(ソフトバンクパブリッシング, 2002)です。どちらもわかりやすくてよい本なのですが、カウンタの実行方法としてSSIのexecコマンドを使っています。わたしが利用しているネットラピュタというプロバイダではSSIのexecコマンドは使用が禁止されている(レンタルサーバサービスでは事情が違うかもしれません)ので、本に載っている方法ではカウンタを表示させることができません。
 最近になってカウンタの数字をインラインフレームとして呼び込めばいいと思いつきました。この方法ならば任意のページが主で、カウンタが従である関係を崩さず気軽にカウンタを利用できます。実験したところうまくいったのでここに公開することにしました。(2009年2月8日日曜日)

しくみ

  1. インラインフレームを含むページへのアクセス発生
  2. iframeのsrc="カウンタプログラムのありか"で指定されたカウンタプログラムが呼ばれる
  3. プログラムはカウンタの数字記録ファイルから数字を読みこみ、その数字に1を加えて記録ファイルに書き戻す。そしてその数字を含むhtmlファイルを生成する。
  4. 生成されたhtmlファイルがインラインフレーム内に表示される

設置方法

このカウンタは以下のファイルを使います。※ファイル名は好きなように変えてしまっても動作に影響はありません。ただしその場合は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

ダウンロード

counter.txt

※ダウンロード後、拡張子をplまたはcgiにしてください(サーバによる)。
※このスクリプトはシフトJISで書かれています

※このページの末尾にこのカウンタを設置しています。

counter.plの中身


#!/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;
↓アクセスカウンタ

MOSHプログラム庫>MOSH Perl/CGI Room

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル