/**
*
* 计数器(v1.1.0)
*
* Version : 1.1.0
* Author : 村长
* PHP : >4.3
*
*/
class Counter
{
var $CountFolder;
var $countType;
var $showtype;
var $imgArray;
function Counter()
{
$this->countType = 0;
$this->showtype = "GetCountByDay";
$this->imgArray = array();
$this->MakeCounter();
}
function MakeCounter()
{
$this->CountFolder = "log/".date("Ymd");
if(!is_dir($this->CountFolder))
{
mkdir($this->CountFolder,0777);
}
$this->_DoCount();
}
//Save data file
function _DoCount()
{
$file = date("Ymd").ip2long($_SERVER['REMOTE_ADDR']).".txt";
if(!file_exists($this->CountFolder."/".$file))
{
$fp = @fopen($this->CountFolder."/".$file,"wb+");
//这里可以保存其他需要的日志记录
@fputs($fp,$_SERVER['REMOTE_ADDR']);
@fclose($fp);
}
}
//获得指定时间的统计数据
//默认为1天 0 为取所有
function GetCountByDay($day=1)
{
//今日的时间戳
$today = strtotime(date("Y-m-d"));
$all = 0;
for($i=$day;$i>=0;$i--)
{
$tsp = $today-(86400*$i);
$folder = "log/".date("Ymd",$tsp)."/*.txt";
$ta = glob("$folder");
$all= $all+ count($ta);
}
return $all;
}
function GetCountUseImg($day=1)
{
$allnumber = $this->GetCountByDay($day);
for($i=0;$istrlen($allnumber);$i++)
{
$idx = substr($allnumber,$i,1);
$returnVal.= sprintf("",$this->imgArray[$idx]);
}
return $returnVal;
}
function SetStyle($style='',$ext="gif")
{
$imgprefix ="img/";
$folder = $imgprefix.$style;
foreach(range(0,9) as $num)
{
$this->imgArray[$num] = $folder."/".$num.".$ext";
}
if(is_dir($folder))
{
$this->showtype = "GetCountUseImg";
}
else
{
$this->showtype = "GetCountByDay";
}
}
function Show($day=0)
{
return $this->{$this->showtype}($day);
}
}
//实例计数器对象
$counter = new Counter();
//采用 sports98 样式显示,告知默认扩展名为png格式
$counter->SetStyle("sports98","png");
echo "
今日访问:".$counter->Show(0);
//采用S1样式显示,默认扩展名为 gif
$counter->SetStyle("s1");
echo "
近3日访问:".$counter->Show(2);
//----只显示文字的计数器
$counter->SetStyle("-");
echo "
近3日访问:".$counter->Show(2);
?>