グラフィックタイプのカウンタ
―― gcount1.cgi/gcount2.cgi & gcount.cgi ――


gcount1.cgi/gcount2.cgi の使用条件・特徴
  1. gcount1.cgi と gcount2.cgi は、SSIが使えないサーヴァーでも使用できます。

  2. gcount1.cgi はカウンタ数の管理を行ない、gcount2.cgi はカウンタ数の gif ファイル表示を受け持ちます。通常はこれら二つを併用しますが、gcount1.cgi だけを使って、カウント数の管理・記録を行ないカウント数そのものは表示しない、ということもできます。

  3. 表示できる最大桁数は8桁です。



gcount1.cgi と gcount2.cgi の設置方法
  1. 前ページに示した作業 (すべてのカウンタに共通する作業) を済ませます。

  2. 数字・序数語尾の表示用 gif ファイルとダミー表示用の透明 gif ファイルとして、下の画像ファイル15個をすべてセーヴしてください。たとえば、使用しているブラウザが Netscape でしたら、画像の上を右クリックし、〈画像を名前を付けて保存〉でセーヴできます。右端の透明ファイルも、枠内を右クリックすれば、trans.gif というファイル名が表示されますので、ちゃんとセーヴできます。セーヴが済んだら、各ファイルを、サーヴァー上の画像ファイルを置いているディレクトリに転送してください。ファイル名は変更しないでください。

      0 1 2 3 4 5 6 7 8 9 st nd rd th @

  3. gcount1.cgi から gcount2.cgi に引き渡されるカウント情報ファイルの作成します。エディタで0バイトの空ファイルを作ってください。ファイル名は num.txt とします。作成したこのファイルを、FTPソフトで log.txt と id.txt が置かれているディレクトリ に、アスキー・モード転送します。転送後、FTPソフトあるいは telnetで、ファイルパーミッションを 606 に変更してください。面倒であれば、ファイルパーミッションの変更はしなくてもかまいません。

  4. gcount1.txt と gcount2.txt のダウンロード。

    CGI スクリプトファイルをここ (gcount1.txt) とここ (gcount2.txt) からダウンロードしてください。ダウンロードの方法は以下の通りです。まず、リンクをクリックして内容を表示させ、次に、ブラウザのメニューの 〈ファイル〉 から 〈名前を付けて保存〉 を選びます。ファイル名を指定するダイアログがでたら、それぞれ gcount1.txt 、gcount2.txt のままで保存します。この解説ページへ戻るには、ブラウザの 〈戻る〉 ボタンを使ってください。なお、ブラウザによっては、ダウンロード後のファイルの先頭に空行が入る場合があります。その場合は、エディタを使って空行を必ず削除してください。先頭が #!..../perl で始まらないと、カウンタは動作しません。ダウンロード後、ファイル名をそれぞれ gcount1.cgigcount1.cgi に変更します。

  5. gcount1.cgi と gcount2.cgi に、必要な変数指定を行なう。

    (1)ダウンロードした2つのファイルの先頭行は、サーヴァー上の perl プログラムの絶対パスを示すものです。telnet でサーヴァーにアクセスし、which perl とコマンドを打ち込めば、perl の存在する絶対パスが確認できます。確認してオリジナルと異なる場合には、エディタを使ってパスを書き直してください。書き直しの際には、先頭の # の次にある ! を削除しないよう注意してください。

    (2) エディタを使って、それぞれのスクリプトの変数設定の部分に各ファイルの絶対パスを書き込みます。この段階では、自分の I.P. アドレスは書き込まず、そのままにしておいてください (動作確認完了後、正しいアドレスを書き込むことになります)。

    (3) 各オプションを指定してください。ログをとるというオプションを選択する場合には、この段階では、ログの最大行数を変更せず、そのままにしておいてください。動作確認後に、あらためて書き込むことにします。

    (4) 以上の作業が終わりファイルをセーヴしたら、これら二つのファイルを、サーヴァー上の html ファイルが置かれているディレクトリ にアスキー・モード転送します。他のディレクトリだとうまく動作しない場合があります。転送後、ファイルパーミッションを705に変更してください。

  6. カウンタを設置する html ファイルに実行コマンドを書き込む。

    (1) gcount1.cgi は、gcount2.cgi の前に実行する必要があります。そこで、ページの冒頭部分あたりに、次のように書き込みます。

       <IMG SRC="gcount1.cgi" BORDER=0 WIDTH="0" HEIGHT="0">

    (2) カウンタを表示したい位置 (必ず、上のタグよりも後の場所とすること) に、次のように書き込みます。ただし、実際には、タグとタグの間は改行しないでください(改行すると表示される数字の間に隙間が生じてしまいます)。? の後の数字は表示する桁の指示で、たとえば、4 は4桁目(千の位)です。必ず半角で指定してください。序数の語尾を表示する場合は、いちばん最後のタグの中で、 ? の後に数字の 9 を指定します。

       <IMG SRC="gcount2.cgi?4">
       <IMG SRC="gcount2.cgi?3">
       <IMG SRC="gcount2.cgi?2">
       <IMG SRC="gcount2.cgi?1">
       <IMG SRC="gcount2.cgi?9">

    作業が終了したら、いつもと同じ要領で、この html ファイルをサーヴァー上の自分のディレクトリに転送します。
     
  7. 動作確認を行なう。

    (1) まず、カウンタを設置したページをブラウザに表示させます。ページのデータがキャッシュに残っている場合はリロードします。


      0001  あるいは  0001th  と表示されるはずです。

    (2) もし、画像が表示されず画像表示失敗のマークが出たら、2つのCGIスクリプトの flock から始まる行すべてをコメント行(行頭に # をつける)にしてみてください。flock が使えない場合には、flock(ファイルロック) されるはずのファイルへの複数ユーザーによる同時アクセスによって、当該ファイルが壊れることがあります。まれにしかないことですが、log.txt のバックアップを頻繁にとるなどして、このリスクに対処してください。

    (3) オプション指定で、(a)自分からのアクセスでカウントアップする、(b)同一アドレスからのアクセスでカウントアップする、の両方、あるいは(b)を選択している場合には、ページをリロードしてカウントアップすることを確認します。ログをとらないオプション指定をしている場合は、ローカルの log.txt をサーヴァーに再度転送すれば、作業終了です。ログをとる指定をしている場合には、(5) と (6) の確認作業が必要です。(a)だけを選択している場合は、次の (4) の作業へと進んでください。

    (4) 同一アドレスからの連続リロードでカウントアップしない、というオプションを選択している場合には、次の確認作業を行ないます。ローカルの id.txt を、再度、サーヴァーに転送します。転送後、ページのリロードでカウントアップしていること、2度目のリロードではカウントアップしていないことを確認します。ブラウザのキャッシュにデータが残る関係で、カウントアップしてしまうこともありますが、リロードを繰り返せば元に戻ります。同様の理由で、逆に、カウント数が変化しないことがありますが、再度リロードすれば変化してくれます。いずれの場合も不具合が生じているわけではありません。この確認作業を何度か繰り返して問題がないようでしたら、ローカルにある log.txt、id.txt と自分のI.P.アドレスを正しいものに書き直した gcount1.cgi を、サーヴァーに転送します。自分のI.P.アドレスが一定していない場合は、gcount1.cgi の再転送は不要です。ログをとらないオプション指定をしている場合は、これで作業終了です。ログをとる指定をしている場合には、次の (5) および (6) の確認作業が必要です。

    (5) ブラウザに log.txt を呼び出します (例 http://あなたのアドレス/log.txt)。ログに記録が追加されていることを確認します。ついでに、後で便利なので、この URL をブックマークに追加しておきます。 (ただし、html ファイルの置かれているディレクトリあるいはそのサブディレクトリ以外のディレクトリに log.txt が置かれている場合には、telnet の cat コマンドで、あるいは、FTP ソフトで log.txt をダウンロードして、log.txt をブラウズする必要があります。) 次に、ローカルにある gcount1.cgi のオプション指定で、同一アクセスからの連続リロードでカウントアップする、を選択し、サーヴァーに転送します (すでに選択済みの場合には、この再転送は不要)。ページをリロードしてから、log.txt をブラウザに呼び出し、ログが更新されていることを確認してください。

    (6) 次に、ローカルにある old.log をサーヴァーに転送してから、カウンタを設置したページを6〜7回ほどリロードしてください。ブラウザ、telnet、あるいは FTP ソフトで old.log をブラウズし、5回までのログデータが記録されていること、log.txt をブラウズして6回目からのログが記録されていることを確認してください。確認できたら、ローカルにある gcount1.cgi のオプションを元に戻しログの最大行を指定して、オリジナルの log.txt と old.log とともにサーヴァーに転送します。これで作業は終わりです。

  8. うまく動作しない場合は、対応策のセクションを御覧ください。




gcount.cgi の使用条件・特徴・設置方法
  1. gcount.cgi は、SSIが使えるサーヴァーでしか使用できません。

  2. 設置方法は、次の2点を除いて、gcount1.cgi と同じです。CGIスクリプト (gcount.txt) のダウンロードはここから行なってください。

    (1) num.txt を作成する必要はありません。

    (2) カウンタを設置する html ファイルのカウンタを表示させたい位置に、次のようなコマンドを書き込んでください 。ただし、" " の中は、gcount.cgi を転送したディレクトリの絶対パスを書き加えてください。たとえば、/home/user/username/public_html/cgi-bin/gcount.cgi といった具合にです。

       <!--#exec cmd="..../cgi-bin/gcount.cgi"-->

    作業が終了したら、いつもと同じ要領で、この html ファイルをサーヴァー上の自分のディレクトリに転送します。

    (3) 下は序数語尾の表示例です。

       You are the 
     visitor.