Ajax によるシンプルなアクセスカウンタです.
Javascript(jQuery) + PHP で実装されています.
- Webページのアクセス数をカウントできます.
- 「PV数」をカウントします.「同一IPはカウントしない」等の機能はありません.
- 累計,今日,昨日のアクセス数を表示することができます.
- 過去の日計アクセス数の保存機能があります.
- Ajax を利用しているので,ページがキャッシュされていてもちゃんとカウントしてくれます.
- カウントしたいページにHTMLタグを数行埋め込むだけで動作します.
ajax-counter/
- counter.js # カウンタ本体のAjaxです(JS)
- counter.php # カウンタ本体のAPIです(PHP)
- README.md # 説明書
- dat/ # アクセス数保存ディレクトリ
- count.dat # 累計, 今日, 昨日のアクセス数
- log.dat # 過去の日計アクセス数
このリポジトリをクローン or DL します.
counter.js
の3行目の url
を適切な絶対パスに変更します.
url: '/ajax-counter/counter.php', // counter.php への絶対パス.
counter.php
の7, 8行目のログファイルの保存場所を適切な絶対パスに変更します.
define('COUNT_FILE', DOCUMENT_ROOT . '/ajax-counter/dat/count.dat'); // アクセス数
define('LOG_FILE', DOCUMENT_ROOT . '/ajax-counter/dat/log.dat'); // ログ
ajax-counter/
ディレクトリをWebサーバ上の任意の場所にアップロードします.
dat/
ディレクトリと,それ以下のファイルに書き込み権限を付与します.
- dat/ # 707 or 777
- count.dat # 606 or 666
- log.dat # 606 or 666
アクセス数をカウントしたいページの,アクセス数を表示したい部分に以下のコードを追加します.
counter.js
のパスは適切なものを適宜指定して下さい.
<script src="/ajax-counter/counter.js"></script>
<div class="counter"></div>
コードを追加したページにアクセスし,以下のように表示されているか確認して下さい.
累計 1 今日 1 昨日 0
ページをリロードして,アクセス数がカウントアップしていれば正しく動作しています.
もし counter
というクラス名を既にCSSなど別の場所で使用している場合は,本スクリプトの counter
クラスとバッティングしてしまいます.
その場合は以下の部分を書き換えて下さい.
counter.js
の8行目の .counter
を別のクラス名に変更する.
jQuery(".ajax-counter").append('累計 '+res.total+' 今日 '+res.today+' 昨日 '+res.yesterday);
Webページに追加するコードの .counter
も↑で変更したのと同じクラスに変更する.
<script src="/ajax-counter/counter.js"></script>
<div class="ajax-counter"></div>
本スクリプトは自由にお使いいただけます.改造も自由です.
ただし,本スクリプトの利用によりいかなる不利益が生じても,作者は一切責任を負わないものとします.
ざっくり説明すると,以下のように動作しています.
- ページにアクセスされると,
counter.js
が呼び出されます. counter.js
は Ajax によりcounter.php
を呼び出します.counter.php
はアクセス数のカウント処理を行い,アクセス数(累計・今日・昨日)を json 形式で出力します.counter.js
は json を受け取り,アクセス数を<div class="counter"></div>
内に表示します.
なお,ブラウザなどで直接 counter.php
にアクセスしてもエラーとなります.
counter.php
は Ajax による呼び出し以外に対してはエラーを吐く仕様となっています.
counter.js
の8行目の append()
内を書き換えることで,自由に変更することができます.
jQuery(".ajax-counter").append('累計 '+res.total+' 今日 '+res.today+' 昨日 '+res.yesterday);
カンマ区切りで次のデータが格納されています.
今日の日付,累計,今日,昨日
1行に1日分のアクセス数が,以下のように保存されています.
日付,日計アクセス数
下に行くほど新しい日付のアクセス数です.
初版公開.
Ajax の呼び出しをキャッシュしないよう修正.