[Top]
[CGI研究室]
- IMG要素形式のカウンタの特徴
IMG要素形式のカウンタの特徴を以下に示します。
- SSIが使えない場合でも使用できる
SSI形式のカウンタはSSIが使用できないと使えませんが、
IMG要素形式のカウンタならば使用できます。
- カウンタ画像を結合する必要がある
IMG要素形式のカウンタはカウンタイメージを出力する為、全桁分のカウンタ画像を結合して
一気に出力する必要があります。
カウンタ画像の結合には、「とほほのWWW入門」(http://tohoho.wakusei.ne.jp/www.htm)にある
とほほさん作のGIFファイル連結ライブラリ(gifcat.pl)が便利です。
但し、gifcat.plはアニメGIF形式でカウンタ画像を結合するため、
アニメGIFに対応していないWebブラウザでは一番左の1桁しか見れません。
(カウンタのカウントアップ自体には影響ありません)
- 表示形式等をHTML側で指定できる
IMG要素内の各属性をHTML側で指定できますので、ページの形式変更の場合などでも
CGIを変更する必要がありません。
※SSI形式でもパラメータ指定でIMG要素の属性を指定できるようにしておけば可能です。
- イメージデータしか出力できない
IMG要素ですのでイメージデータしか出力できず、テキスト等を出力することはできません。
エラーがあった場合のために予めエラー用画像を用意しておく事も考慮しておいた方が良いでしょう。
- IMG要素形式のカウンタでの本日カウンタと昨日カウンタ
IMG要素形式のカウンタで、総計カウンタの他に本日カウンタと昨日カウンタを表示する場合は、
別々のIMG要素を用意してカウンタCGIのパラメータ指定で表示を別けるようにします。
総計<img src="./cgi-bin/count.pl" border=0><br>
本日<img src="./cgi-bin/count.pl?today" border=0><br>
昨日<img src="./cgi-bin/count.pl?yesterday" border=0><br>
カウンタCGIでは、以下の処理を行ないます。
- カウンタファイルには総計/本日/昨日の3つのカウント数と本日の日付を持つ。
- 日付の切り替わりチェックを行ない、日付が切り替わった場合は本日カウント数を昨日カウント数へ移し、本日カウント数を0にリセットする。
- 総計カウンタがアクセスされた時点で総計カウント数と本日カウント数をカウントアップする。
しかしこの方法では、総計カウンタより先に本日カウンタがアクセスされてしまった時に
カウントアップ前の本日カウント数が表示される事になってしまい都合が良くありません。
これに対処するには、「同一IPチェックの最初にアクセスされた時のカウント数を表示」と
連動させて、以下の条件で処理を行ないます。
- カウントアップは総計/本日/昨日の何れかのカウンタが最初にアクセスされ時点(同一IPアドレスをチェック)で行なう。
- 総計カウントは同一IPアドレスで最初にアクセスされた時のカウント数を表示する。
- 本日/昨日カウントは現在の本日/昨日のカウント数を表示する。
ここまで行なっても、丁度日付が切り替わった時点でアクセスされた場合に表示上の不整合が発生する可能性が
ありますが、ごく稀なことですしこれ以上の対処を行なう意味はないだろうという結論に達しました。
CGI Saloon