首页 > php代码 > php实现计数器功能

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

收藏随意^^请保留教程地址.

标签:none

发表留言