クライアントから、キャッシュをクリアしなくてもページを開く度にアクセスカウンターがカウントされるようににしたいという依頼がございました。
このアクセスカウンターは、同一アカウントからのアクセスは24時間に1回までという風に設定してあるのですが、
そのような依頼があった為、困っています。
そもそも、同一IPアドレスから同日にアクセスした際に、キャッシュをクリアしなくても、単純にページを見た回数だけカウントされる様に表示する事は可能なのでしょうか。
当方PHPには無知なものでして、大変困っております。
どなたかおわかりの方がいらっしゃいましたら、お教えいただけますでしょうか。何卒宜しくお願い申し上げます。
出力先index.php****
<div class="mt-7 cf"style="">
<iframe src="../count/count.php" height="70" width="140" frameborder="0" scrolling="no" style="float:right;">
</iframe></div>
PHP
count.php
<?php
```
#######################################################################################
### # PHPカウンタープログラム
# IPアドレスで判定していますので、同一IPアドレスではカウントされませんが、
# 間にほかの人のアクセスがあればカウントします。ユニーク数というよりはセッション数になります。
# インラインフレームでページに埋め込み、またはphpファイルに直接埋め込むことも可能です。
# 改造や改変は自己責任で行ってください。
#######################################################################################
header("Content-Type: text/html;charset=UTF-8");
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name='robots' content='noindex,nofollow'>
</style>
</head>
<body>
<?php
$keta = 5; //カウンタの最低桁数 ※カウントがこの桁を超えても大丈夫(ちゃんと自動で桁が上がります)
$base_day = date("Y/m/d"); //日付の取得
$remoteAddr = $_SERVER['REMOTE_ADDR']; //IP取得
$filepath = "count.dat";
$fp = fopen($filepath,"r+b");
flock ($fp,LOCK_EX);
$line = fgets($fp);
//fclose($fp);
list($reg_day, $total, $today, $yesterday, $reg_remoteAddr) = explode(",", $line);
if ($base_day != $reg_day){
$yesterday = $today;
$today = 0;
}
if ($remoteAddr!=$reg_remoteAddr) {
$total++;
$today++;
ftruncate($fp,0);
rewind($fp);
fwrite($fp,"$base_day,$total,$today,$yesterday,$remoteAddr");
fclose($fp);
}
echo "<div id=\"total\">";
printf("%0{$keta}d", $total);
echo "</div>";
echo "<div id=\"count\">";
echo "本日<span class=\"count\">{$today}</span>\n";
echo " 昨日<span class=\"count\">{$yesterday}</span>";
echo "</div>";
?>
</body>
</html>
```
DAT
count.dat
2012/09/30,0,0,0,127.0.0.1