网站计数器的设计

时间:2024-03-10 18:57:01

1.网页计数器的工作流程

   网页计数器不单独作为页面,而是嵌入在访问的页面中,当用户访问该网页的时候,把网页的访问累计数加1(也可以加10,来迷惑访问者),然后把计数显示在访问的网页中。

 1.1用户向服务器发出访问请求;

 1.2服务器读取该访问浏览次数的计数,加1后,向客户端返回浏览次数;

 1.3服务器保存新的浏览次数;

 1.4有新的用户要访问,则重复以上3步。

2.解决方案

  计数保存在文件或数据库中,计数的过程是向文件或数据库读/写数据的过程,计数在页面的显示方式有两种:文本方式和图片方式。

主要算法:

(1)数据文件:counter.dat(注:可以不准备,当检查文件不存在时由PHP建立)

(2)读出数据文件counter.dat中数据,算法为

       打开文件;

       若不存在,则创建它,并以0为初始数据;

       否则,读出数据;

       关闭文件。

(3)把累加后的数据写入数据文件counter.dat,算法为

       累计数据

       打开文件

       写入数据

       关闭文件

(4)向网页输出计数信息

 1 <?php
 2 /*
 3  * 
 4  * @Authors peng--jun 
 5  * @Email   1098325951@qq.com
 6  * @Date    2015-11-04 11:19:44
 7  * @Link    http://www.cnblogs.com/xs-yqz/
 8  * @version $Id$
 9  ==========================================
10  $max_len   计数的最大位数
11  $CounterFile  计数存放的文件(路径和文件名)
12  $counter 存放当前的计数的值
13  $cf  打开计数存放文件的句柄
14 
15  file_exists($CounterFile) 判断文件是否存在
16  fopen($CounterFile,"w")  打开指定文件,若不存在,建立它
17  fopen($CounterFile,"r")  打开指定文件,若存在,读出文件的内容
18  fgets($cf,$max_length)   从文件中读出指定长度的字符
19  fputs($cf,"0")           把字符写入到文件中
20  fclose($cf)              关闭打开的文件
21  trim(fgets($cf,$max_len))移除字符串中的空格。换行。回车。制表符
22  */
23  header("Content-type: text/html; charset=UTF-8"); 
24  
25  ?>
26  <!DOCTYPE html>
27  <html lang="en">
28  <head>
29      <meta charset="UTF-8">
30      <title>网页计数器</title>
31  </head>
32  <body>
33      <?php 
34     //数字输出的网页计数器
35      $max_len = 8;
36      $CounterFile = "files/counter.dat";
37     if (!file_exists($CounterFile)) {//如果计数器文件不存在的处理
38         $counter = 0;
39         $cf = fopen($CounterFile, "w");//打开一个文件,在此先建立该文件
40         fputs($cf,"0");//初始化计算器文件
41         fclose($cf);//关闭文件
42     }else{//取回当前计数器的计数
43         $cf = fopen($CounterFile, "r");
44         $counter = trim(fgets($cf,$max_len));//移除字符串中的空格。换行。回车。制表符
45         fclose($cf);
46     }
47 
48     $counter++;
49     $cf = fopen($CounterFile, "w");
50     fputs($cf,$counter);
51     fclose($cf);
52     ?>
53 
54     <div>欢迎您</div>
55     <p>本网站的第 <?php echo $counter; //输出计数器计数?>位访客</p>
56 </body>
57 </html>

2.用函数嵌入访问页的计数器