[もくじへ|トップページへ|前ページへ|次ページへ]
に更新
11.アクセスカウンタ
カウンタは自作しなくても、ほとんどのプロバイダで既製品がサービスされて
います。しかし、誰がいつ訪問してきたかのログをとったり、自分の好みに合
ったカウンタとなると既製品では物足りません。そこで、今回はカウンタを作
ってみました。
カウンタのプログラムは、掲示板などのようにリンクをクリックしてから起動
するのではなく、ページが表示されると同時に起動されなければなりません。
SSIでは、それが簡単に作れますが、SSIはセキュリティー等の関係から
使用できないプロバイダも多いのです。それでCGIカウンタということにな
ります。
講義用として、テキスト表示とGIF画像表示のカウンタを作成してみました
が、テキストの方は問題点がいくつかありますので、GIF画像表示の方を紹
介します。
まずは、完成品をご覧ください。
良寛のカウンタ
2回クリックしてもカウントされないでしょう?このカウンタは、同じ人の訪
問は1日1回しかカウントされないのです。
次のようなプログラム(counter.cgi)を作成しました。コメントを入れてあり
ますので、スクロールボタンを操作しながら解読してください。
プログラムの流れは、概略次のようになります。
メイン
------------------------------------------------------------
開始
掲示板のリンク部分をクリックすると、このプログラムが実行
されます。先頭行にはPerlへのパスを書きます。
先頭行の「#」はコメントにはなりません。
------------------------------------------------------------
↓
------------------------------------------------------------
画像連結プログラム(gifcat.pl)を取り込む
------------------------------------------------------------
↓
------------------------------------------------------------
変数の初期設定
------------------------------------------------------------
↓
------------------------------------------------------------
訪問日の取得
------------------------------------------------------------
↓
------------------------------------------------------------
ロックファイル
同時アクセスがあると、そのままではデータが破壊されるので
ダミーのファイルを作成し、そのファイルが存在するときは、
他からのアクセスを禁止するようにします。
もちろん、データの書き込みが終わればロックファイルは削除
することになります。
------------------------------------------------------------
↓
------------------------------------------------------------
カウントデータの読み込み
------------------------------------------------------------
↓
------------------------------------------------------------
日付が変わったときカウントログを初期化する
------------------------------------------------------------
↓
------------------------------------------------------------
訪問者のアドレスを取得
------------------------------------------------------------
↓
------------------------------------------------------------
訪問者のチェック(2回以上のアクセスかどうか)
------------------------------------------------------------
↓
------------------------------------------------------------
本日初訪問の場合の処理
カウンタを1増やし、アドレスといっしょに書き込みます。
------------------------------------------------------------
↓
------------------------------------------------------------
ロックの解除
ロックファイルを削除(unlink)します。
------------------------------------------------------------
↓
------------------------------------------------------------
カウンタ表示
とほほさんの画像連結表示プログラムを使用しています。
------------------------------------------------------------
↓
------------------------------------------------------------
終了
------------------------------------------------------------
サブルーチン
&lock
------------------------------------------------------------
同時アクセスのチェック
ロックをかけるにはロックファイルを作ります。ロックファイ
ルと言っても、単なる空っぽのファイルです。
ロックファイルが存在するかどうかは、if
(-e $lockfile){〜
で調べることができます。
ロックファイルが既に存在すれば、フラグ$flagが0のままで、
10回トライします。それでもロックされたままだったら、あ
きらめて$flag=0のままで元に帰ります。
存在しなければ、ロックファイルを作成し$flag=1として元に帰
ります。
------------------------------------------------------------
サブルーチン
&error
------------------------------------------------------------
ロックファイルが存在すれば、削除して終了します。
------------------------------------------------------------
プログラムを自分でカスタマイズして使う場合は、次をクリックして表示させ
counter.txtはcounter.cgi、gifcat.txtはgifcat.pl
という名前で保存してく
ださい。( )内はパーミッションです。
counter.txt → counter.cgi(755)
gifcat.txt → gifcat.pl(644)※とほほさん開発
count.dat(666) メモ帳などで半角数字0を書き込んだファイル
必ずテキストモード(アスキーモード)でアップロードしてください。
この他に数字の画像ファイルが必要です。とほほさんのHPにもあります。
画像はバイナリモードでアップロードしてください。
また、カウンタ用の専用フォルダを作る場合は、パーミッションは777にし
てください。
カウンタを設置するページに、
<img
src="http://・・・/~・・/cgi-bin/counter.cgi">
などとして、リンクします。
ちょっと改造すれば、1日分のアクセスログをメールで送ることもできるはず
です。改良版ができたら教えてください。リンクさせていただきます。
動かないときは、サポート掲示板へどうぞ。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
[もくじへ|トップページへ|前ページへ|次ページへ]
|