xrea-banner xreaad

カウンタ

namespace kilrey; / JavaScript / Web の小道具 / カウンタ

試しにカウンタを作ってみました。 主に 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 に従って消してください。