Categories
php script

PHP-Text Counter

i made a PHP-Text Counter for i-mode. when we access the net by mobile phones, the host name/ip address is frequently changed. so i use ‘USER_AGENT’ and ‘TIME’ elements for preventing double-count. like this.

 

 

<?php
 $filename = “./counter.dat”; // datのパス

 $UA = htmlspecialchars($_SERVER[‘HTTP_USER_AGENT’]);//ユーザーエージェントの取得
 if (strncmp($UA, “Mozil”, 5) <>0 && strncmp($UA, “Opera”, 5) <>0 && strncmp($UA, “Lynx/”, 5) <>0 && strncmp($UA, “HotJa”, 5) <>0) {
 $HIJI = date(“U”);//アクセス年月日時刻の取得
 $file = fopen($filename,”r+”);
 flock($file, 2);
 $count = fgets($file,256);//直前のカウント数の取得
 $lastUA = fgets($file,256);//直前のユーザーエージェントの取得
 $lastHIJI = fgets($file,256);//直前のアクセス年月日時刻の取得
 $count = chop($count);
 $lastUA = chop($lastUA);
 $lastHIJI = chop($lastHIJI);
 $dffrHiJI = $HIJI – $lastHIJI;
 if($lastUA != $UA)                        //ユーザーエージェントが直前のものと異なる場合カウントアップ
 {$count = $count + 1;
 $lastUA = $UA;
 $lastHIJI = $HIJI;
 } elseif($dffrHiJI > 1200)               //ユーザーエージェントが直前のものと同じでも20分以上経っている場合はカウントアップ
 {$count = $count + 1;
 $lastHIJI = $HIJI;}
 ftruncate($file,0);
 rewind($file);
 fwrite($file, $count);
 fwrite($file, “\n”);
 fwrite($file, $lastUA);
 fwrite($file, “\n”);
 fwrite($file, $lastHIJI);
 flock($file, 3);
 fclose($file);
}
?>

Leave a Reply

Your email address will not be published. Required fields are marked *