CGI研究室:簡単なアクセスカウンタ


 もっともお手軽なアクセスカウンタを基本にして説明をしていきます。
 すでに、Perlスクリプトの基本ともいうべきアクセスカウンタですが、 ここから学ぶべきところは多く、アクセスカウンタといっても奥が深いです。

 とりあえず、次の二つのファイルを見てください。

access_counter.cgi
#! /usr/sbin/perl
## PERL アクセスカウンター V1.0 (C) by Kitaro 1997
## CGI and SSI used
$ac_file    = "/usr/home/dialup/3webnet/USERNAME/public_html/cgi-bin/acounter.log";
open  (FILE,"$ac_file") || die " Can't Open $ac_file: $!\n";
@LINES=;
close(FILE);
$SIZE=@LINES;
open(OFILE,">$ac_file") || die "Can's Open $ac_file: $1\n";
$counter=$LINES[$i];
$counter++;
print OFILE "$counter\n";
close(OFILE);
print "$counter";
# end of perl


acounter.log
0

 たったこの二つのファイルを転送、設定するだけでアクセスカウンターはできてしまいます。
このアルゴリズムではいろいろ不便もありますが、それらは今後解決していく課題として、 このプログラムについてまず動作させてみましょう。一度動作させてしまえば、付け足していくのは 比較的簡単ですから。
access_counter.cgiファイルは、実際のPerlスクリプトです。
 ここで重要なのは、一行目の#! /usr/sbin/perlで、この一行目で サーバーのPerlコマンドの位置を指定します。なぜかというと、Perlコマンド自体サーバー のビルトインコマンドでないため、Perlスクリプトを実行する際にいったんUNIXシェルが 解釈するためです。
 また、4行目の$ac_file = "/usr/home/dialup/3webnet/USERNAME/public_html/cgi-bin/acounter.log";USERNAMEのところには自分のアカウント名(私の場合kitaro)を入 れることになります。

acounter.logファイルはアクセスカウントを記録するファイルです
 初期値として0を与えているだけです。

 いずれのファイルもアスキー転送で、自分のCGI実行ディレクトリ(cgi-bin等)へ転送し、
access_counter.cgiは実行属性 chmod +x access_counter.cgi
acounter.logは書き込み属性chmod +w acounter.log
を、TELNETで設定します。
 あとは、そのままTELNETでaccess_counter.cgiと打ち込み、 実行してみればよいでしょう。

 ハイパーテキスト上で実行し表示する場合は、
<!--#exec cmd="/usr/home/dialup/3webnet/USERNAME/public_html/cgi-bin/sample.cgi" -->
と拡張子shtmlのファイルにHTMLとして記述するだけです。


Copyright (c) kitaro 1997