自作のCGIが使えるようになって嬉しいことのひとつに、アクセスカウンターが好きなだけ設置できるという点があります。
一人1ヶ所にしか設置できない(複数ページに設置してもいいけどカウント数は合算になる)プロバイダのお仕着せカウンターに比べて、画像が自由に選べたり、さまざまな集計が出せたりと、楽しいものが多いようです。
但し、基本的にはお仕着せカウンターの方が専用のサーバーを使っていて動作も軽いもので、あまりあちこちに自作CGIカウンターを取り付けるのは我々のサーバーの負担になり、他の人の迷惑にもなるので控えましょう(^_^)v
ここでは、KENT WEBさんから、好きなgif画像が使えて、日計、月間集計も付いて多機能なDAY COUNTER-EX(日計カウンタ2)を拝借してみましょう。
まずはKENT WEBさんの解説/ダウンロードページからdayx.lzh(またはdayx.zip)と、別途カウンター用のgif画像を入手します。
ちなみに、このCGIでは「総カウント数」と「今日のカウント」「昨日のカウント」用に別の画像が使用できますが、「総カウント数」を表示するだけでも日計/月間集計は可能なので、「今日や昨日のカウントは表示しなくていいが集計だけは見たい」という人は、入手する画像は1種類でも構いません。
dayx.lzh(zip)の中身 dayx.cgi CGI本体です。当然、/cgi-bin/の下に置かなければ動きません。 dayxmgr.cgi 集計を閲覧する時のCGIです。同じく/cgi-bin/の下に置きましょう。 gifcat.pl 画像連結ライブラリだそうです。CGIと同じ場所に置きましょう。また、このファイルは書き換えてはいけません。 dayx.dat
day.dat
mon.datそれぞれ、月次、日次、総カウント数が記録されるファイルです。CGIからしか見にいきませんので、CGIと同じ場所でいいでしょう。 blue.gif
red.gif問題なのがこの2つのファイルです。dayxmgrがグラフ表示する時の画像で、<img>タグとしてブラウザが読みに行くファイルなので、/homepage/配下に置かないと表示できません。 別途入手したカウンタ画像 (総カウント用)
0.gif
1.gif
2.gif
:
(昨日/今日用)
0.gif
1.gif
2.gif
:こちらも、@niftyでは/cgi-bin/の中に置くとブラウザが直接見に行けない画像ファイルなのですが、このCGIで利用される時に限り、CGIが内部で処理して、CGI自身が画像ファイルとしてブラウザに戻って来る。つまり、ブラウザが直接このgif画像を単体で見に行くことはないので、マニュアル通り/cgi-bin/の下に置くことができます。
ROOT / cgi-bin / dayx.cgi [755] | | dayxmgr.cgi[755] | | gifcat.pl [644] | | dayx.dat [666] | | day.dat [666] | | mon.dat [666] | +--/ gif1 / 0.gif ...(カウンタ画像) | 1.gif | 2.gif | : | | +--/ gif2 / 0.gif ...(カウンタ画像2) | 1.gif | 2.gif | : | +---- / homepage / index.html (トップページ) | +--/ image / blue.gif ... (グラフ用画像) red.gif/homepage/配下の/image/というディレクトリ名は任意です。
## ---- <dayx.cgi> -------------------- #
#!/usr/local/bin/perl CGIスクリプトを手に入れたら、まず最初に必ずこの1行目をチェックする習慣をつけましょう。
# ファイルロック処理 (0=no 1=symlink 2=open)
$lockkey = 1;@niftyではsymlink関数が使えるようですので"1"でいいでしょう。
## ---- <dayxmgr.cgi> -------------------- #
# 集計一覧からの戻り先
$home = "http://homepage?.nifty.com/****/index.html";CGIから相対パスで戻れないのが@homepageの特徴です。
# グラフ画像
$graph1 = "http://homepage?.nifty.com/****/image/blue.gif";
$graph2 = "http://homepage?.nifty.com/****/image/red.gif";こちらも、URLパスでのアクセスになります。
「?」にはあなたのサーバー番号、「****」にはあなたのアカウント名、「image」部分はあなたの置き場所により任意ですから、この行をコピペしてもダメですよ(笑)最低限、修正すべき箇所は以上です。
(本家ページには、dayx.datも修正とありますが、とりあえずは動いちゃうようです・・・いいのか?)
転送モード パーミッション 表示例 *.cgi テキスト 755 rwxr-xr-x *.pl テキスト 644 rw-r--r-- *.dat テキスト 666 r--r--r-- *.gif バイナリ
*.gifファイルやディレクトリのパーミッションについては、とりあえずは気にしなくていいでしょう。
転送モードは、画像ファイルがバイナリ(RAW)モード、それ以外がアスキー(テキスト)モードです。
(特に*.cgiをバイナリモードでアップすると動作しません。)
初めての設置時には、まずチェックオプションを付けてみましょう。
http://hpcgi?.nifty.com/****/dayx.cgi?check
・ログファイルのパス : OK!
・ログファイルの読みこみパーミッション : OK!
・ログファイルの書きこみパーミッション : OK!
・gif1ディレクトリのパス : OK!
・gif2ディレクトリのパス : OK!
・gif1ディレクトリのGIF画像 : OK!
・gif2ディレクトリのGIF画像 : OK!と、このように全部OKならば、今度は直接
http://hpcgi?.nifty.com/****/dayx.cgi?gif
これでカウンタが表示されればばっちりです。続いて、
http://hpcgi?.nifty.com/****/dayx.cgi?today (今日のカウント数)
http://hpcgi?.nifty.com/****/dayx.cgi?yes (昨日のカウント数)さて、うまくいったでしょうか?
うまくいったら、それぞれを、<img src="http://hpcgi?.nifty.com/****/dayx.cgi?gif">
などと、イメージタグとしてHTMLファイルに記述すれば完成です。
もちろん、最初から記述しておいて一度に呼び出してもいいんですが、それだと、エラーが出た時の切り分けが非常に面倒なのです。
直接URLで呼び出していれば、単純なURLの記入ミスもその場で直せますし、エラー画面によって、どこが悪いのかすぐにわかるのです。
http://hpcgi?.nifty.com/****/dayxmgr.cgi
まだカウントが少ないのでグラフ画像が見えにくいかも知れませんが、ここが見えるかどうかが、@nifty対応が上手くいったかの分かれ目です。
さらに「戻る」リンクを押してみて、指定のページに飛べるかも確かめましょう。さて、うまくいったでしょうか?
なんか、エラーメッセージが出た人はこのページへどうぞ〜
このページで紹介したCGIのあるサイトです