PHP语言之php实现计数器功能
小标 2019-01-15 来源 : 阅读 894 评论 0

摘要:本文主要向大家介绍了PHP语言之php实现计数器功能,通过具体的内容向大家展示,希望对大家学习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("",$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);
?>    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言PHP频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程