さて、ここでも使ってるカウンターですが、
PHPでカウントして、Ajaxでカウントを見にいくというものです。
しかし、アクセスのたびにカウンターが回るのは都合が悪いのでCookieを食わせています。
Cookieの特徴はあるCookieを持っていれば、それはあるCookieを食わせた人と同じということ。
もっともCookieを勝手に作成されると問題があるから、Cookieの値だけで信用しないのが普通ですが。
たとえば、SessionIDをCookie食わせて、そのSessionにUAを記録しておいて変化していないか確認するとか。
まぁけど基本的にはCookieはユニークなユーザーでないか確かめる有力な方法だ。
ただし、Cookieを食わない人もいる。そんな場合はうまく判別できない。
で、ある程度信用できる方法としてUA・IPアドレスを比較するという方法がある。
IPアドレスだけではNATを使われると、区別が付かなくなりやすい。
UAだけでは、Fxユーザーが軒並み弾かれたりということが起きる。
そこで両方確認する。これでかなり確実になる。これでも弾きすぎる気がするけど。
さて、実際の手法を考えたのだが、カウンターのログファイルは非常に容量が多くてこれを見るのは現実的じゃない。
以前はこれの行数を数えてカウンターを表示させてたが、他にカウントのファイルを用意していますよ。
で、軽く処理できることが大切だと考えたので、カウントのファイルの後ろに3行記録を書き足すことにしました。
具体的な方法は、カウントファイルを配列に読み込んで、
Cookieを確認して、なければ2〜4行目のUA・IPと一致しないか確認、一致しなければ1行目のカウントを回して表示、
カウントファイルを、1行目に1増やしたカウント、2〜3行目に3〜4行目をコピー、4行目にこのユーザーのUA・IPを記録。
そしてログファイルに追加。
CookieかUA・IPが一致した場合は1行目のカウントを表示して終わり。
というわけで、意外とスマートに収まりました。
まぁしかし、違う人でもUA・IPが一致する場合というのは十分あり得るので、ちょっとひどいかなとも思っています。
その配慮で最近3回と比較するという方法をとっているんですけどね。
ただ、これを導入したのは部のだけで、fdiaryのは入れ替えてない。
まぁ今度整理して導入しようと思う。
ここのカウンターは過去の無駄な機能が多いので…まぁいらんなら消せばいいのだがJavaScript周りも確認しないといかんのでね。
しかし、Cookie切ってる人ってどれぐらいいるのかねぇ。