用cookie防止重複刷新計數

<?php
$cFile="count.txt";
$acctime=time();
if(file_exists($cFile)){
	$fp=fopen($cFile,"r"); 
	$str=fgets($fp,22);
	fclose($fp);
	$count=trim($str);
	$count++;
}else{
	$count=1;
}
$first=false;
if(!isset($_COOKIE['acctime'])){
	setcookie("acctime",$acctime,time()+3600*24);
	$first=true;
	$acctime=3600*24+$acctime;
}else{
	$acctime=3600*24+$_COOKIE['acctime'];
}
if($first||$acctime<=time()){
	$count=sprintf("%d",$count);
	$fp=fopen($cFile,"w");
	fputs($fp,$count);
	fclose($fp);
}else{
	$count--;
}
print "您是第 ".$count." 位訪客。您下次訪問計入統計的時間是:".date("Y-n-j H:i:s",$acctime)."。";
?>


思路:每次訪問時

1.如果客戶端沒有cookie : 創建cookie,記錄下當前時間,同時計數器加1;

2.如果已經有cookie : 將當前時間與cookie值作差:(1) 小於24小時的,什麼也不做;(2) 大於24小時的,將當前時間寫入cookie,,同時計數器加1;

要求:

1.文本文件.txt存儲計數數據,不用sql數據庫;

2.只用cookies判斷,不用session,24小時內重複刷新不計數(重要);

3.可以用JS調用返回文本數字;

4.無需考慮瀏覽器禁用cookie的情況;

5.不需要規定統計數字最少位數;

6.請勿推薦第三方統計和網上找的代碼,只需要簡單的統計,不需要其他多餘功能。

發佈了23 篇原創文章 · 獲贊 4 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章