编程
您现在的位置:首页 >> 编程

用PHP编写一个简单的网页计数器

一、纯文本方式显示计数值

设计思路:用文本文件counter.txt读取访问的次数。第一位访问者浏览我们的网页,服务端从counter.txt中读取该页已被访问的次数,把这个次数加 1 后存回 counter.txt,并在浏览器中显示加 1 后的次数。如果第二位访问者浏览此页,服务器又重复上述过程,这样依次下去,当每一位访问者浏览网页时都重复以上的过程,就实现了访客计数器。代码如下:

<html>

<head>

<title>文本计数器</title>

</head>

<body>

<?php

$count_num=0;

if(file_exists("counter.txt"))

{

$fp=fopen("counter.txt","r"); 

$count_num=fgets($fp,9);

$count_num++;

fclose($fp);

}

$fp=fopen("counter.txt","w"); 

fputs($fp,$count_num); 

fclose($fp); 

echo "<CENTER>您是第".$count_num."位访客";

?>

</body>

</html>

当用户访问这个页面之后,系统会在该页面的同级文件夹内生成一个 counter.txt 文本文件,该文件内容非常简单,就是一个数字。如果希望人工改变计数器的值,可以直接将该数字更改;如果希望将计数器归零,可以直接删除该 counter.txt 文件,当用户再次访问 counter.php 页面时,计数器将自动归零。

在网页应用中,不会在每个需要的页面中都写上上面计数器的代码,我们可以单独写成一个计数器的counter.php文件,在需要的页面上利用 require 函数调用。

<HTML>

<HEAD>

<TITLE>  计数器的引用</TITLE>

</HEAD>

<BODY>

<CENTER>《长相思    其二》

<BR>

<hr width=200 color=red size=1> 

作者:李白<BR> 

日色欲尽花含烟,月明欲素愁不眠。<BR> 

赵瑟初停凤凰柱,蜀琴欲奏鸳鸯弦。<BR> 

此曲有意无人传,愿随春风寄燕然。<BR> 

忆君迢迢隔青天,昔日横波目,今作流泪泉。<BR> 

不信妾断肠,归来看取明镜前。<BR>

</CENTER>

<hr width=400 color=red size=1>

<BR><BR><BR>

<?

/*************************

以下为 PHP 代码,利用 require 函数调用计数器counter.php文件。

*************************/

require("counter.php");

?>

</BODY>

</HTML>

二、图形显示计数值

上面的计数器是以纯文本的方式来显示计数值的,下面我们用图形来显示当前的计数值,使计数器的外观更漂亮些。这里需要包含 0~9 这 10 个数字的图片文件,分别命名为 0.gif~9.gif,并存放在当前目录的img 文件夹下。

修改后的全部代码如下:

<html>

<head>

<title>文本计数器</title>

</head>

<body>

<?php

$count_num=0;

if(file_exists("counter.txt")) 

{

$fp=fopen("counter.txt","r"); 

$count_num=fgets($fp,9); 

$count_num++;

fclose($fp);

}

$fp=fopen("counter.txt","w"); 

fputs($fp,$count_num); 

fclose($fp); 

echo "<CENTER>您是本站第";

$count_num=strval($count_num); 

$length=strlen($count_num); 

/*下面的部分设定计数长度为固定9位数,即可最大显示值为999999999的数量,显示时在count_num前面空位上补0。修改这个位数,可以显示更多。*/

$num_zero=9-$length; 

for ($i=1;$i<=$num_zero;$i++){

echo "<img src=img/0.gif>";

}

/*下面显示计数部分*/

for ($i=0;$i<$length;$i++){

$temp_num=substr($count_num,$i,1); 

echo "<img src=img/".$temp_num.".gif>";

}

echo "位访客</CENTER>";

?>

</body>

</html>

三、用 PHP 的图形处理函数动态生成图片计数器

上面的计数器的实例,方法比较灵活,实用性也好。实际上,我们可以用另一个思路,就是利用PHP强大的图像处理能力,用 PHP 的图形处理函数动态生成图片计数器。全部代码如下:

<?php

Header("Content-type:image/gif"); 

$count_num=0; 

$n=10; 

if(file_exists("counter.txt")) 

{

$fp=fopen("counter.txt","r"); 

$count_num=fgets($fp,$n+1); 

$count_num++;

fclose($fp);

}

$fp=fopen("counter.txt","w"); 

fputs($fp,$count_num); 

fclose($fp); 

$count_num=strval($count_num); 

$length=strlen($count_num); 

$dif=$n-$length; 

$num_zero=0;

for($i=1;$i<=$n;$i++)

{$num_zero="0".$num_zero;};

$len2=strlen($num_zero);

$rest=substr($num_zero,0,$dif);

$string=$rest.$count_num;

for($i=0;$i<=$n-1;$i++){

$str[$i]=substr($string,$i,1);

}; 

$font=4; 

$im=imagecreate($n*11-1,16); 

$black=ImageColorAllocate($im,0,0,0);

$white=ImageColorAllocate($im,255,255,255); 

imagefill($im,0,0,$black); 

ImageString($im,$font,1,0,$str[0],$white);

for($i=1;$i<=$n-1;$i++){

imageline($im,$i*11-1,0,$i*11-1,16,$white);

ImageString($im,$font,$i*11+1,0,$str[$i],$white);

}; 

ImageGif($im); 

ImageDestroy($im);

?>