設置までの大まかな流れです。まずこれに従って設置してみることをおすすめします。ここでの説明では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を開き、冒頭の変数設定の部分等を修正してください。
これはこのスクリプトに限らず、全てのCGIスクリプトに共通する設定です。
ここで指定する設定は個別設定ファイルに同じ設定があれば個別設定ファイルの設定が優先されます。個別設定ファイルについては後述。
解凍したファイルと画像を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ファイルに以下ような感じで記述を追加してください。
総カウント数の表示
<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を使用してください。
GIFファイルの他にPNGファイルを利用することが出来ます。ただし古いブラウザではサポートしていませんし、最新のブラウザでも完全にサポートしているのはNetscape6くらいです。
SI-PNG(サイト外へのリンク)形式のカウンタファイルが必要です。普通のPNGファイルはSI-PNG形式に変換する必要があります。
このスクリプトで使用しているPNG画像連結ライブラリpngrenym.plは上記サイトで配布されているpngren.plを少しいじったもので、使用できる画像ファイルは完全に互換性があります。
設定で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つのスクリプトで複数のカウンタを設置できます。
以上で設定は完了です。追加設置したカウンタを呼び出すには
http://....../daycount.cgi?gif&file=count2
とfileオプションにファイル名を与えて呼び出してください。
HTMLファイルに記述するときは
<IMG src="..(略)../daycount.cgi?gif&file=count2" width="100"
height="30">
のように"&"を"&"とエスケープする必要があるので注意してください("&"のままでも表示される場合が多いですが文法違反です)。セミコロンを忘れないようにしましょう。
標準で使っていた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アドレスからドメインネームを逆引きできますので大抵アクセスもとのプロバイダを突き止められます。