数字图片计数器

来源:互联网 发布:龙傲天下法器进阶数据 编辑:程序博客网 时间:2024/05/03 11:22

思路类似,图形化输出,每个数字一副图片。
程序代码分为4部分:
1.主文件count.php
2.计数器读写count.inc
3.count.dat计数文件
4.图片目录img

------------------------------------------------------------------------------------------------------------------------------------------

//counter.php

<?
 require("counter.inc")
?>
<html>
<head>
 <title>我的计数器</title>
</head>
<body>
 <p>欢迎进入我的网站</p>
 您是本站第<?php counter();?>位访客!<br>
</body>
</html>

----------------------------------------------------------------------------------------------------------------------------------------

//counter.inc

<?
 function counter()
 {
  //设置计数器的最大位数
  $max_len=8;
  
  //设定记录访问数的文件
  $CounterFile="counter.dat";
  
  if(!file_exists($CounterFile))//如果counter.dat不存在
  {
   //定义计数器初始值
   $Counter=0;
   
   //以写的方式打开计数器
   $cf=fopen($CounterFile,"w");
   
   //锁定
   flock($cf,3);
   
   //将数字0写入文件counter.dat
   fputs($cf,"0");
   
   //关闭文件流指针
   fclose($cf);
  }
  else //如果counter.dat存在
  {
   //以只读的方式打开counter.dat
   $cf=fopen($CounterFile,"r");
   
   flock($cf,3);
   
   //从counter.dat中读出访问数,并将其位数剪切成8位
   $Counter=trim(fgets($cf,$max_len));
   
   //关闭文件流指针
   fclose($cf);   
  }
  
  /*如果刷新了session
  防止刷屏机制
  session_is_registed("in")
  =true 用户仍然在同一个会话期,计数器不刷新
  =false用户不在同一个会话期,计数器+1
  */
  
  if(session_is_registered("in")==false)
  {
   //计数器加1
   $Counter++;
   
   //以写的方式打开文件
   $cf=fopen($CounterFile,"w");
   
   flock($cf,3);
   
   //将计数器写入文件
   fputs($cf,$Counter);
   
   fclose($cf);
  }
  
  //计算访问数的位数
  $Counter_len=strlen($Counter);
  
  //输出的访问数是8位,不够8位,在前面补0
  for($i=1;$i<=($max_len-$Counter_len);$i++)
  {
   echo "<img src='img/0.gif'>";
  }
  
  for($i=1;$i<=$Counter_len;$i++)
  {
   //输出实际的访问数
   echo "<img src='img/" . substr($Counter,$i-1,1) . ".gif'>";
  }
 }
?>