PHP图形数字计数器的实现


php图形数字计数器,是现在网站中经常使用的方法,它的基本功能是针对单个用户而言,登录网站后计数器的值加一,用户刷新网页,计数器的值不会增加。这一点功能的实现是利用session来实现的,当用户登录时,检测session变量的值,如果该值为空,则在存放登录人数的文件中读取现有的访问量,将该值加一,关闭文件,然后输出改值;如果session变量的值不为空,则计数器的值不增加,即使在用户刷新的时候也不增加。

session实现计数有一点不足的地方,就是虽然用户在该页面刷新时计数器的值不会增加,但是当用户关闭浏览器,再次打开这个网页时,计数器的值仍会增加,不过这样也是符合计数的原理的;在这一点和cookie不同的是,利用cookie实现用户刷新计数器的值不更新,关闭浏览器打开也是不更新,但是这是在一定的期限内的,当用户设置的cookie过期之后,计数器的值还是会增加;这样分析来看,如果要非常精确的计数,有多少人访问网站就要用IP来实现,而且要存储在数据库中,这个相对前两种来说麻烦一点,但是利用数据库保存IP可以实现更精确的统计,不单单实现用户刷新不重复计数,还能实现统计总的访问量,某个月的访问量,某天的访问量,甚至精确到某个IP的访问量等,在这里就先介绍利用session实现的图形数字计数器:

在根目录下创建:data.txt的文件,用来保存访问量。

 $handle=fopen("data.txt","r");
    if(!$handle){
        echo "打开文件失败!";
    }else{
        echo "您是本站的第:";
        $counter = fgets($handle,1024);        // 取出文件中的现有的访问量的值
        fclose($handle);
        $count = strlen($counter);    // 这里实现的是6为数字的计数,例如002056,在这里计算出counter的长度,那么它前面的就是全部输出0就可以了
        for($i=0;$i<6-$count;$i++){
            echo "<img src='images/0.png'>&nbsp;";      // 2056前面都输出  0 的那个小png的图片
        }
    }
    for($i=0;$i<$count;$i++){
        $disgn = substr($counter,$i,1);  // 这里利用substr()函数实现一位一位的数字来比较,第一个参数是string类型的变量,第二个参数是从第几个开始输出,第三个变量是    输出几个
        switch($disgn) {                          // 各自比较    转化为图片的形式
            case '0':
                $rst[$i]='0.png';
                break;
            case '1';
                $rst[$i]='1.png';
                break;
            case '2':
                $rst[$i]='2.png';
                break;
            case '3':
                $rst[$i]='3.png';
                break;
            case '4':
                $rst[$i]='4.png';
                break;
            case '5':
                $rst[$i]='5.png';
                break;
            case '6':
                $rst[$i]='6.png';
                break;
            case '7':
                $rst[$i]='7.png';
                break;
            case '8':
                $rst[$i]='8.png';
                break;
            case '9':
                $rst[$i]='9.png';
                break;
        }
        echo "<img src='images/".$rst[$i]."'>&nbsp;";
      }
    echo "位访客";

这里要准备0—9的图片素材,保存在根目录下的images文件夹中就可以了,具体的实现效果是:

相关内容