计数器~(1.1.0)
时间:2007-04-24
来源:互联网
@同一IP每日只记录一次
@可查阅近N日记录~
哈,临时测试写的,喜欢不用数据库做计数器的可以看看~
可以指定图片序列作为显示
本样例支持文字&图片,没使用GD库,很容易上手~
log目录里都是测试文件,大家测试后可以直接删除。配置的时候log目录要允许web组用户可写~
改进:允许多样式选择,可自主修改,添加,支持多扩展名图示
Version:1.0.0 地址:http://www.phpchina.com/bbs/thread-23827-1-1.html
PHP代码:
<?php
/**
*
* 计数器(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;$i<strlen($allnumber);$i++)
{
$idx = substr($allnumber,$i,1);
$returnVal.= sprintf("<img src=\"%s\">",$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 "<br />今日访问:".$counter->Show(0);
//采用S1样式显示,默认扩展名为 gif
$counter->SetStyle("s1");
echo "<br />近3日访问:".$counter->Show(2);
//----只显示文字的计数器
$counter->SetStyle("-");
echo "<br />近3日访问:".$counter->Show(2);
?>
作者: sports98 发布时间: 2007-04-24
作者: sports98 发布时间: 2007-04-24
作者: 默默 发布时间: 2007-04-24
作者: wwwfk 发布时间: 2007-04-24
作者: phperchina 发布时间: 2007-05-01
作者: wrs_1983 发布时间: 2007-05-05
作者: 木�^ 发布时间: 2007-05-05
作者: heixiake 发布时间: 2007-05-05
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28