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);
本文链接:http://www.phprm.com/code/7d666b2a0dc72f5f36e287547721d2e4.html
收藏随意^^请保留教程地址.