サイト制作や運営に関するトピックスとかドラムネタとか満載??WEB制作や運営に関する楽屋話 Binbo-Special

クリックカウントを取る方法の一つ

 

Katsu Don at Donburi Ya
Katsu Don at Donburi Ya / CanadaPenguin

ある時、少年は思いました。

「一番美味しいどんぶりって何だろう?」

少年はリュックを手に取り、旅に出るのであった・・・・・

そんな訳で、今回はアクセス解析・サイト分析などに有用な「クリックカウントを取る方法の一つ」をメモしておきます。

ワードサラダなのか!?と言わんばかり意味不明な文章でスタートしましたが、それはそれ、これはこれ、ということで。

方法1:リンク先をプログラムにしてリダイレクトを行う

簡単に思いつく方法はこれですが、カウントを取るリンクを増やす度にプログラム書き換える(データを追加する)必要がある、というのはいただけない。
という事で、もうちょっとスマートな方法を模索。

方法2:aタグのhrefはそのままに、onclickイベントで同期処理を行う

今の所これが現実的にやりやすい方法かな、と思います。

例えば、

<a href="hoge.html" onclick="Clickcount.set('hoge');">hogeへのリンク</a>

とやって、javascript(jQuery使用)側で、

var Clickcount = {
     set : function(id){
          $.ajax({
               type: "GET",
               url: "clickcount.php",
               data: "id="+id,
               async: false
          });
          return true;
     }
};

とかやってあげる。

async=false が肝。
これで同期通信となり、ajaxの利点である非同期通信をやめちゃう。
そうすることでPHP側の処理が終わってからjavascriptの処理が続行することになります。

clickcount.php側では、

<?php
// jQueryのajaxの場合、X-Requested-WithにもれなくXMLHttpRequestが入っているので、これとHTTP_HOSTで不正アクセスを弾く
if($_SERVER['HTTP_X_REQUESTED_WITH']!='XMLHttpRequest' || $_SERVER['HTTP_HOST']!='www.chin3.net'){
     die('Illegal access.');
}
// 以下の例では、渡されたidの値を元にCSVファイル(idとカウントのカンマ区切り)のカウントを増やすという超単純処理。
$data = file("clickcount.log");
$flag = 0;
for($i=0; $i<count($data); $i++){
     $data[$i] = preg_replace('/\r|\n/', '', $data[$i]);
     $row = explode(',', $data[$i]);
     if($row[0]==$_GET['id']){
          $data[$i] = $row[0].','.++$row[1];
          $flag = 1;
     }
}
if($flag==0){
     // 存在しないidなので追加する
     $data[] = $_GET['id'].',1';
}
file_put_contents("clickcount.log", implode("\n", $data));

なんてやってあげると、後はカウントを取りたいaタグにonclickを追加するだけです。

サンプル

クリックカウントを取る方法の一つ

まあ、上記の例だと単純なカウント数しか取れないので、日ごと月ごとにlogファイルを変えるとかすれば、もう少し実用的になるかと思います。


そして少年は思いました。

「カツ丼や親子丼とかメジャーなどんぶりは確かに凄い。凄いが、もうちょっと油麩丼が注目されても良いんじゃないだろうか?」

今日もどんぶりは旨かった・・・・・(完)

関連記事

 


Google Search

Menu

Subscribe

Account

 

Old Contents