こんな感じでファイルを作る。
functions.php
<?php
function counter(){
//日付を取得
$base_day = date("Y/m/d");
//IPアドレス取得
$remoteAddr = $_SERVER['REMOTE_ADDR'];
//空ファイルを用意する
$filepath = "count.dat";
//ファイルを開いて変数にデータを入れる
$fp = fopen($filepath,"r+b");
flock ($fp,LOCK_EX);
$line = fgets($fp);
list($reg_day, $total, $today, $yesterday, $reg_remoteAddr) = explode(",", $line);
//日付が変わったら今日のカウントをゼロにして、昨日のカウントを入れ替える
if ($base_day != $reg_day){
$yesterday = $today;
$today = 0;
}
//IPアドレスが一致してなかったら(連続カウント防止)
if ($remoteAddr!=$reg_remoteAddr) {
//合計と今日のカウントを1増やす
$total++;
$today++;
//ファイルの中身を空にする
ftruncate($fp,0);
//ファイルポインタを先頭に戻す
rewind($fp);
//ファイルに書き込んで閉じる
fwrite($fp,"$base_day,$total,$today,$yesterday,$remoteAddr");
fclose($fp);
}
//カウントを表示させる
echo "今日{$today} ";
echo "昨日{$yesterday} ";
echo "合計{$total}";
}
カウンターを表示させたい場所で実行。
index.php
<?php
include("functions.php");
counter();
?>
「count.dat」の空ファイルを作り、functions.phpと同じ位置に配置させる。