試しにカウンタを作ってみました。 主に php + SQLite +GD で動いています。 初期設定での見た目は簡単に変えられますが という感じです。 特徴としては
- php が動くサーバなら大体使える
- 利用ライブラリは SQLite, GD (どちらも標準添付)
- SQLite でロックするのでデータが壊れにくい
- 桁数を調整出来る
- 同一 IP を無視する時間が設定出来る
- 画像が差し替えられる
- 昨日や今日のデータだけを表示も出来る
- 一つのカウンタで複数のページを解析出来る
- 簡単なアクセス解析も付属
- MIT LICENSE
- 欠点 : referer を送らず JavaScript も動かない という環境だと正しい解析が出来ない
というところです。
設置方法です。 まず利用するサーバが php と SQLite に対応しているかを調べてください。 最近の php なら標準で SQLite に対応しているので そのまま使うことが出来ます。 次に (download) からファイル一式をダウンロードして解凍してください。 counter.html はこの説明用の html なので消して構いません。 counter/counter.sql は初期化ファイルです。
> sqlite counter/counter.db < counter/counter.sqlのようにして初期化します。 sqlite3 ではなく sqlite を使う点に注意してください。 判らなければ配布のまま使ってください。 counter/counter.sql は初期化にしか使わないので消して構いません。 残りはそのままアップロードします。 配置や実行権限は以下を参考にしてください。
| ファイル名 | 実行権限 | 用途 |
|---|---|---|
| 適当なディレクトリ/counter.php | 644 | カウンタの操作 |
| 適当なディレクトリ/counter/ | 777 | データの配置 |
| 適当なディレクトリ/counter/.htaccess | 644 | データの保護 |
| 適当なディレクトリ/counter/config.php | 644 | 設定 |
| 適当なディレクトリ/counter/counter.db | 666 | データ格納 |
カウンタを動作させる html ファイルには
<script type="text/javascript">
document.write('<a href="http://kilrey.com/">'+
'<img src="counter.php?K_COUNT=on&K_REFREF='+
document.referrer+'&HTTP_REFERER='+
document.location.href+'" '+
'alt="counter" />'+
'</a>');
</script>
<noscript>
<a href="http://kilrey.com/">
<img src="counter.php?K_COUNT=on"
alt="counter" />
</a>
</noscript>
というコードを貼ってください。 貼った位置にカウンタが読み込まれます。
とりあえず動くことが確認出来たら設定をしましょう。 counter/config.php を編集します。 $length はカウンターを何桁表示するかです。 カウンターの実数がこの桁に満たない場合は x.gif で埋めて表示します。 x.gif は標準では 0.gif と同じものです。 カウンターの実数がこの桁を越えた場合は その実数をそのまま表示します。 その場合には画像の大きさが変わるのに注意してください。 $interspace は同一 IP からの連続アクセスを どれだけの間無視するかです。 一時間ならば 1 hour, 一日ならば 1 day, というように数字の後に単位を付けて記述します。 どのような単位が使えるかを詳しく知るには SQLite のドキュメントを当たってください。
次は画像のカスタマイズです。 counter/ 内の画像 0.gif - 9.gif は カウンターの表示に使われるものです。 単純に同じ名前の gif 画像で差し替えれば 新しいものが使われるようになります。 特に画像のサイズを登録したりする必要はありません。 各画像の横幅はばらばらでも構いませんが 縦幅は揃えないと画像に隙間が出来てしまいます。
その他の機能についてです。 今日の分だけのカウンタを表示するには
<script type="text/javascript">
document.write('<a href="http://kilrey.com/">'+
'<img src="counter.php?K_COUNT=on&K_REFREF='+
document.referrer+'&HTTP_REFERER='+
document.location.href+'&K_DATEDIFF=0" '+
'alt="counter" />'+
'</a>');
</script>
<noscript>
<a href="http://kilrey.com/">
<img src="counter.php?K_COUNT=on&K_DATEDIFF=0"
alt="counter" />
</a>
</noscript>
というように GET 引数に K_DATEDIFF=0 を追加してください。 昨日の分だけを表示するには K_DATEDIFF=-1 です。 合計と今日や昨日の分など複数を同じページに表示する場合は 最初の一つを除いて K_COUNT=on を K_COUNT=off にしてください。 残しておいても連続アクセス防止機能で弾かれますが サーバに余計な負担をかけることになるので止めた方が良いです。 アクセス解析機能はまだ GUI を作っていないので 今は sqlite で生データを読んでください。 そのうち統計処理やデータ圧縮するものを作るつもりではいます。
最後にカウンタの下のロゴとリンクは著作権表示です。 特に強い理由がなければ消さないでください。 どうしてもというのなら MIT LICENSE に従って消してください。