リロードでは増えないアクセスカウンタ
前回と今回のIPアドレスをチェックして、同じ場合は増加しない
アクセスカウンター。このサンプルでは、IPアドレスはip_memory.txt
カウンターの数字はip_counter.txtに記憶させている。ソース参照。
前回のアクセス時のIPアドレスは
今回のアクセス時のIPアドレスは38.107.179.212
759
source
<?php
$IP = getenv("REMOTE_ADDR");
$ip_fname = "ip_memory.txt";
$ip_fp = fopen($ip_fname,"r"); //まずは読込のみでオープン
$ip_value = fgets($ip_fp,256);
fclose($ip_fp);
$ip_fp = fopen($ip_fname,"w");
flock($ip_fp,2); //ロックする
fwrite($ip_fp,$IP);
flock($ip_fp,3); //ロック解除
fclose($ip_fp);
//ここまでで、$ip_valueには前回、
//$IPには今回のIPアドレスが入った
print "前回のアクセス時のIPアドレスは" . $ip_value."<br>";
print "今回のアクセス時のIPアドレスは" . $IP."<br>";
$count_file = "ip_counter.txt";
$count_fp = fopen($count_file,"r");
$count_value = fgets($count_fp,256);
fclose($count_fp);
if($ip_value != $IP) {
$count_fp = fopen($count_file,"w");
flock($count_fp,2);
$count_value += 1;
fwrite($count_fp,$count_value);
flock($count_fp,3);
fclose($count_fp);
}
print $count_value;
?>