Day Counter YM 設置説明

設置までの流れ

設置までの大まかな流れです。まずこれに従って設置してみることをおすすめします。ここでの説明ではGIFファイルの出力となります。

バイナリのダウンロード

Day Counter YMのバイナリファイルをダウンロードしてください。Day Counter YM の説明ページよりリンクしています。

ダウンロードしたファイルの解凍

ダウンロードしたファイルはLHAにて圧縮されていますのでこれを解凍してください。ネットの基本なのでここでは詳しくは述べません。

他のファイルとは別にフォルダを作ってそこに入れておくことを推奨します。

画像ファイルの入手

カウンタに使う画像ファイルを入手してください。総カウント数の表示用と本日、前日のアクセス数の表示用で別々のファイルが使用できます。

0から9までの10枚の同一サイズの画像が必要です。

自分で作っても良いですがネット上を探せばフリーの素材がいっぱい見つかります。標準で1種類の画像ファイルを付けてありますのでとりあえずこれで試してみても構いません。

画像ファイルをフォルダに入れる

GIFとPNGでは方法が異なりますが、ここではGIFを使うものとします。

入手した画像ファイルをスクリプトを解凍したフォルダの下位に新しくフォルダを作って入れてください。0から9までの画像をそれぞれ"0.gif, 1.gif,....9.gif" というファイル名にしてください。

daycount.cgiの設定

エディタでdaycount.cgiを開き、冒頭の変数設定の部分等を修正してください。

全スクリプトの共通設定
#!/usr/local/bin/perl(1行目)
プロバイダで定められたPerlへのパスを指定します。

これはこのスクリプトに限らず、全てのCGIスクリプトに共通する設定です。

全カウンタの共通設定
# gif画像連結ライブラリ(gifcat.pl)のパス
$gifcat = 'gifcat.pl';
gifcat.plへのパス(daycount.cgiから見た相対パスかサーバー上での絶対バス)を記述してください。解凍したファイルをそのまま設置する場合修正の必要はありません。
# png画像連結ライブラリ(pngren.pl)のパス
$pngrenym = 'pngrenym.pl';
pngrenym.plへのパスを記述してください。解凍したファイルをそのまま設置する場合修正の必要はありません。
# デフォルト(引数でファイルが指定されなかった場合)の記録ファイル名
$log = 'daycount';
修正しなければ標準の記録ファイル名はdaycount.datとなります。
# ファイルロック形式
# → 0=no 1=symlink関数 2=mkdir関数 3=flock
$lockkey = 1;
同時アクセスによってlogが破損するのを防ぐためのファイルロックの指定です。設置するサーバー上で使用可能なファイルロック形式を指定してください。flockとtruncateコマンドが使用可能ならflockを推奨します(Unix,NTではflockが使用可能ならtruncateも大丈夫のようです。truncateが使えなくてもエラーにはなりませんがロックがかなり不完全になります)。flockの次に安全なのはsymlinkです。mkdirは全てのサーバーで使用可能なようですが処理が遅くロックが不完全です。
# ロックファイルディレクトリ
$lockdir = './lock';
ロックディレクトリ名です。この説明に従って設置するなら修正不要です。flockでは使用しません。
#sendmailのパス
$sendmail = '/usr/lib/sendmail';
メール通知機能を使う場合sendmeilへのパスを記述してください。sendmailが使用可能ならプロバイダ側から公開されているはずです。sendmailの使えない場合はメール機能は使えません。
標準設定、個別設定ファイルの設定

ここで指定する設定は個別設定ファイルに同じ設定があれば個別設定ファイルの設定が優先されます。個別設定ファイルについては後述。

# 総カウント数の桁数
$digit1 = 5;
総カウント(メインのカウンタ)の桁数
# 本/昨日カウント数の桁数
$digit2 = 3;
本日の訪問者、昨日の訪問者の表示に使うカウンタの桁数
# 使用する画像形式
# 1:gif,2:png,
# 10:HTTP_ACCEPTにimage/pngがあればpng無ければgif
# 11:IE5.0,NN4.04以降はpng、その他のブラウザや判別不能の場合は10と同じ
$useformat = 10;
使用する画像形式を指定してください。PNGファイルの利用で詳しく説明します。
# 使用する画像ファイルの設定
# --> フルパスだと / から始るパス
# gifファイル使用時
# 総カウント用GIF画像のディレクトリ
$gifdir1 = './gif1';
# 本/昨日カウント用GIF画像のディレクトリ
# --> フルパスだと / から始るパス
$gifdir2 = './gif2';
# pngファイル使用時
# 総カウント用PNG画像のファイル名
$pngfile1 = 'pngcntr.png';
# 本/昨日カウント用PNG画像のファイル名
$pngfile2 = 'pngcntr.png';
使用する画像ファイルのある場所を指定します。GIFファイルはディレクトリの指定、PNGはファイルの指定となります。
#これ以下の時間間隔の再訪問はカウントアップしない(単位=秒)
$interval = 1;
この時間が経つ前に同じIPアドレスの人が訪問してきた場合その人が前回訪問時に表示されたカウントが表示されます。秒単位の指定です。1時間の場合3600、1日(24時間)の場合86400となります。
#メール送信機能
#何カウントごとにメールを送るか(0でメール機能を使わない)
$mail = 1;
ここで指定した数の倍数のカウントが行われるごとにメールで管理人に通知します。
#連番の時メールを送るか(1=yes,0=no)
$mailpattern{renzoku} = 1;
連番(1111,333など同じ数値の連続する番号)となったときにメールで通知します。
#その他のメールを送るカウント
@mailcount = {1234,2345,3456,4567,5678,6789};
ここで指定したカウントとなったときにメールで通知します。","で区切っていくつでも指定できます。
#メール送信先アドレス
$myaddress = 'xxxx@xxxx.plala.or.jp';
メールの送り先アドレスです。基本的に自分のアドレスを指定することになるでしょう。プロバイダによっては設置したプロバイダのメールアドレスでないと送れない場合もあるかも知れません。

サーバーへのアップロードとサーバー上での設定

サーバーにアップロード

解凍したファイルと画像をFTPによってサーバーにアップロードします。画像ファイルはバイナリモード、スクリプトファイル(cgi,pl)はテキスト(アスキー)モードで転送してください。

以下のファイルはアップする必要はありません。

サーバー上にロックディレクトリを作成

先ほどdaycount.cgiで設定した場所に一致するようにFTPソフトを使ってサーバー上にロックディレクトリを作成してください。標準設定のままの時はdaycount.cgiのあるディレクトリの下位にlockという名前のディレクトリを作成してください。下記のディレクトリイメージを参照してください。

パーミッションの設定

パーミッション(アクセス権)を適切に設定してください。プロバイダによって適切な値は異なりますのでプロバイダの説明も参考にしてください。

ファイル名の右の[]内の見方
[転送モード 一般的なパーミッション CGIがowner権限で動く場合のパーミッション]
<DIR> : ディレクトリ
 public_html
        |
        |-- daycount (任意のディレクトリ)[<DIR>  755 755] 
              |
              |--- lock                [<DIR>  777 700] ロックディレクトリ
              |      
              |--- daycount.cgi        [ASCII  755 700] CGI本体ファイル
              |--- gifcat.pl           [ASCII  644 600] GIF画像連結ライブラリ
              |--- pngrenym.pl         [ASCII  644 600] SI-PNG画像連結ライブラリ
              |--- daycount.dat        [ASCII  666 600] 記録用データファイル
              |
              |--- count2.dat          [ASCII  666 600] 第2カウンタ用データファイル
              |--- count2.set          [ASCII  644 600] 第2カウンタ個別設定ファイル
              |
              |--- purple              [<DIR>  755 700] GIFカウンタ用画像格納ディレクトリ
              |      |--- 0.gif        [BINARY 644 600]
              |      |--- 1.gif        [BINARY 644 600]
              |      |--- 2.gif        [BINARY 644 600]
              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
              |      |--- 9.gif        [BINARY 644 600]
              |
              |--- red_s               [<DIR>  755 700] GIFカウンタ用画像格納ディレクトリ
              |      |--- 0.gif        [BINARY 644 600]
              |      |--- 1.gif        [BINARY 644 600]
              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
              |      |--- 9.gif        [BINARY 644 600]
              |
              |--- png                 [<DIR>  755 700] PNGカウンタ用画像格納ディレクトリ
                     |--- green.png    [BINARY 644 600]
                     |--- purple_s.png [BINARY 644 600]
                     |--- purple.png   [BINARY 644 600]
この色のファイルは必要に応じて作成してください。1つのカウンタのみで動作させる場合必要ありません。
PNGカウンタ画像ファイルはPNGカウンタを使わなければ必要ありません。

パーミッション設定を2つ併記しておきましたが、左の設定は今まで(今も?)一般的だったサーバーの設定です。この設定ではファイルを他人が覗くことが出来ますので注意が必要です。右側の設定はCGIがOwner権限で動作するように設定されているサーバーでの設定です。この設定で動けばファイルを他人から覗かれる心配は(ほとんど)ないので安全です。この設定で動作するなら是非こちらの設定を使いましょう。なお、Owner権限で動作するサーバーでは左側の従来の設定では動かない場合もあります。

ちなみに、このサイトの置いてあるぷららのサーバーはOwner権限で動作しますので右側の設定を使ってください。左側の設定では動かない可能性があります。

ブラウザから動作チェック

チェックモード

スクリプトに各ファイルのパスが正しいかなどをチェックする機能があります。ブラウザのURL欄に

http://..(略)../daycount.cgi?check

というようにcheckという引数を付けてCGIを起動してみてください。

カウンタ表示のチェック

ブラウザのURL欄に

http://..(略)../daycount.cgi?gif

というようにgifという引数を付けてCGI起動してください。カウンタ画像が表示されれば成功です。

続いて

http://..(略)../daycount.cgi?today

というように起動してください。これで本日のアクセス数が表示されるはずです。

呼び出し元HTMLファイルへの記述

ここまで来ればカウンタは完成です。後は呼び出したいHTMLファイルに以下ような感じで記述を追加してください。

総カウント数の表示

<P align="center"><IMG src="..(略)../daycount.cgi?gif" width="100" height="30" alt="アクセスカウンタ-テキスト表示不可" title="アクセスカウンタ"></P>

本日、前日のアクセス数の表示

<P align="center">本日<IMG src="http://..../daycount.cgi?today" border="1" width="27" height="12" alt="昨日のアクセス数-テキスト表示不可" title="昨日のアクセス数">人目のアクセスです。昨日は<IMG src="http://..../daycount.cgi?yes" border="1" width="27" height="12" alt="本日のアクセス数-テキスト表示不可" title="本日のアクセス数">人のアクセスがありました。</P>

width(画像の幅)は元の画像を桁数分だけ連結したものになります。height(高さ)は元の画像と同じです。これらの属性はHTML4.01の仕様書では”必須”とされているので書いておくことをおすすめします。

まとめれば
総カウント数 :daycount.cgi?gif
本日のアクセス数:daycount.cgi?today
前日のアクセス数:daycount.cgi?yes
となります。

ちなみに、PNGも表示できるのにgifというパラメーターではおかしいのではないかということもあり、gifの代わりにcountも使えるようにしてあります。gifと書くのがいやな方はcountを使用してください。

詳細機能

PNGファイルの利用

GIFファイルの他にPNGファイルを利用することが出来ます。ただし古いブラウザではサポートしていませんし、最新のブラウザでも完全にサポートしているのはNetscape6くらいです。

使用可能なカウンタ画像

SI-PNG(サイト外へのリンク)形式のカウンタファイルが必要です。普通のPNGファイルはSI-PNG形式に変換する必要があります。

このスクリプトで使用しているPNG画像連結ライブラリpngrenym.plは上記サイトで配布されているpngren.plを少しいじったもので、使用できる画像ファイルは完全に互換性があります。

PNGの利用設定
  1. cgiファイルの使用する画像のファイルの設定でPNGを利用するように設定してください。
  2. 設定で使用するSI-PNG形式のカウンタファイルを指定してください。

設定でhttpリクエストのacceptヘッダ(HTTP_ACCEPT変数)を調べてPNGを受け入れ可能ならPNGを出力するオプションを設けてあります。

acceptヘッダとはとはブラウザがHTTPリクエスト(ページの読み込み要求)の際に送信する環境変数の1つで受け入れ可能なMIME Typeが書かれています。MIME Typeとはインターネットで使われるファイルの分類コードで、GIFファイルはimage/gif、PNGはimage/pngと定義されています。この項目を調べてimage/pngがあればPNGを受け入れ可能と判断します。ただし、調べた限りではIE5.5は受け入れ可能と返しません。Netscapeは4.73、6では受け入れ可能と返ってきます。

IE5.0、Netscape4.04以降は透過色が無効になるなどの問題はあるもののとにかく表示自体はされるのでこれ以降のブラウザはPNGを返すというオプションも設けてあります。

複数カウンタの使用

1つのスクリプトで複数のカウンタを設置できます。

  1. まず、標準で使っているdaycount.datを任意の名前(ここではcount2.datとします)でコピーしてください。ただし拡張子はdatのまま、コピー先もdaycount.datと同じディレクトリにしてください。
  2. count2.datをサーバーに転送し、daycount.datと同じパーミッションに設定してください。

以上で設定は完了です。追加設置したカウンタを呼び出すには

http://....../daycount.cgi?gif&file=count2

とfileオプションにファイル名を与えて呼び出してください。

HTMLファイルに記述するときは

<IMG src="..(略)../daycount.cgi?gif&amp;file=count2" width="100" height="30">

のように"&"を"&amp;"とエスケープする必要があるので注意してください("&"のままでも表示される場合が多いですが文法違反です)。セミコロンを忘れないようにしましょう。

標準で使っていたdaycount.datをコピーしたため途中からのカウントになると思いますが、カウント数の変更の項を読んでカウントを修正してください。

カウンタごとに別の設定を使用する

更に、カウンタごとに別の設定(画像ファイルなど)を使用することが出来ます。

アーカイブ中にあったbetsusettei.setを別設定をしたいカウンタのデータファイル名と同じファイル名にします。count2.datのカウンタに適用したいならcount2.setとなります。拡張子は常にsetである必要があります。また、スクリプトファイルと同じディレクトリに置いてください。

そのファイル(上記の例ならcount2.set)の設定を修正します。

別設定ファイル中の設定は、daycount.cgiの初期設定で設定する項目と同じです。daycount.cgiの設定と同じでよい場所はコメントアウト(先頭に"#"を挿入)するか消去してください。

設定したファイルをサーバーに転送し、パーミッションを確認してください。

カウント数の変更

データファイルはテキストファイルなのでエディタで修正することが出来ます。

daycount.dat を エディタ で開くと、1行目に以下のように <> で区切られた数字が4つ並んでいます。

27<>6<>2<>885<><>

このうち4番目(最後の)の数字が総カウント数を意味しますので、例えば、1000カウントから始めたい場合には以下のように修正・保存します。その後FTP転送し上書きしてください。

27<>6<>2<>1000<><>

ちなみに最初の数字が最後にカウントアップしたときの日付、2番目が(最後にカウントアップした日の)前日のアクセス数、3番目が本日(正確には最後にカウントアップした日)のアクセス数です。

2行目以降はアクセス者の中で再訪問としない時間で指定した時間が経過していない人のIPアドレスと訪問時間(1970年1月1日からの秒数)です。

エラー表示

エラーが発生した場合InernalServerErrorでないスクリプトエラーはErrorというGIF画像が返ります。

エラーの原因はHTTPヘッダとして出力されます。ヘッダを見ることが出来るソフトをお持ちの方は参考にしてください。ただしデバッグ用に作ったものなのでこの出力を見てもよく分からないかも知れません。

InternalServerErrorの場合はおそらくスクリプトの文法に問題があります。スクリプトの編集をしたときに行末のセミコロンを削ってしまったといったミスをしていないか確認してください。

キリ番を踏んだ人を突き止める

キリ番とはきりの良い番号のことです。1000とか1111、1234などです。

メール送信機能を使うと、送信されるメールにそのカウントを踏んだ人のIPアドレスが書かれています。IPアドレスからドメインネームを逆引きできますので大抵アクセスもとのプロバイダを突き止められます。