PHP教程.应用实例--7

时间:2010-01-07 16:55:43   来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:己亲手制作的,不能体现出自己的特色。下面就PHP环境下记数器的制作过程进行详细的讨论。访客计数器的流程如下:第一位使用者浏览某页。服务器程式从资料库或档案中读取该页被浏览次数。将次数加一储存,并将它送回第一位使用者。下一位使用者浏览某页。服务器程式从资料库或档案中读取该页被浏览次数。
  正文:

 PHP下定制自己的记数器
计数器是让 Web 访客知道该网页或者网站的人气指数最直接的方法,同时,访客人数也是给广告商做广告的最好依据。虽然很多网站都提供免费的计数器,可毕竟不是自己亲手制作的,不能体现出自己的特色。下面就PHP环境下记数器的制作过程进行详细的讨论。

访客计数器的流程如下:

第一位使用者浏览某页。

服务器程式从资料库或档案中读取该页被浏览次数。

将次数加一储存,并将它送回第一位使用者。

下一位使用者浏览某页。

服务器程式从资料库或档案中读取该页被浏览次数。

将次数再加一储存,并将它送回下一位使用者。

PHP中没有直接的计数器函数,但利用它强大的功能,我们可以很容易地自己编写一个计数器。计数器的实现分为两个阶段:一是实现计数;二是实现数字的显示。在实现计数时又有两种方式:一是基于文件的计数方式;二是基于数据库的计数方式。同样在实现数字的显示上也有两种方式:一是普通的文本显示;二是图形方式显示。下面就分别将这四种情况作一一介绍.

一、计数的实现

1.基于文件的计数

原理:把以往的访问人数记录在一个文本文件中,当网页被访问的时候,打开该文件并从中读出以往的访问人数,加 1,得到最新的访问人数,再把最新的访问数字回写到纪录访问人数的文件中。
实现;

<?php

$counterFile = "counter.txt";
if (!file_exists($counterFile)) {
//判断文件是否存在
$fp = fopen($counterFile, "w");
fputs($fp, "0");
fclose($fp);
}
//读文件
$n=10;
$fp = fopen($counterFile, "r");
$str1 = fgets($fp,$n);
$str1++;
fclose($fp);
//回写文件
$fp = fopen($counterFile, "w");
fputs($fp, $str1);
fclose($fp);

?>

程序说明:在浏览到本页时,PHP 程式先找寻 counter.txt 文件是否存在,若不存在,则建立一个 counter.txt 文件,并将 0 写入文件。然后读取 counter.txt 文件的内容,并将读出的数字加一,然后回写到文件中。

2、基于数据库的计数

原理:把访问人数记录在一个数据库中,当网页被访问的时候,从数据库中读出以往的访问人数,加 1,得到最新的访问人数,再把最新的访问数字回写到数据库中。

实现:假设数据库为mysql数据库,名为XinXiKu,先建一数据表count,表字段中仅有counter一个字段,默认值为0,来记录访问人数。

<?php

//连接数据
$db=mysql_connect("localhost","root","");
mysql_select_db("XinXiKu",$db);
//更新访问人数
$result=mysql_query("update count set counter=counter+1",$db);

?>

程序说明:访问者在浏览到本页时,首先连接到数据库,并把记数字段用原值加1来进行更新操作,实现访问数的递增。

二、记数的显示

1、普通的文本方式显示

这种显示方法很简单,在需要显示记数的地方直接输出即可。以上面的例子分别说明:

基于文件的计数,直接输出变量str1的内容即可。
<?php echo $str1 ; ?>

基于数据库的计数,首先从数据库中读出,然后再输出。

<?php

//查询数据库
$sql="select * from count";
$result=mysql_query($sql,$db);
//取得记录集
$record=mysql_fetch_array($result);
//取得访问人数
$str1=$record["counter"];
echo $str1;

?>

同样,你也可以用html语句像 <font color size>等对输出的数字进行修饰。文本显示的优点是减少下载时间,浏览速度快。缺点是显示方式不够活泼。

2、图形方式显示

原理:把读出的访问数据格式化成标准的格式,然后利用php提供的图像处理函数,把数字输出成图片格式。这样,数字的显示格式可以随意控制,真正能体现出自己的特色来。

实现:

<?
Header("Content-type: image/gif");
//定义输出为图像类型
$n=10;
//变量$n是显示位数

//利用上面的方法,取得访问人数并赋值给变量$str1 (程序略)
$str1=取得访问人数的值
$str2 = "";
//位数如果不够$n位,在前面补0
$len1 = strlen($str1);
for ($i=1;$i<=$n;$i++) {
$str2 = "0".$str2;
};
//得到$n位0
$len2 = strlen($str2);
//计算访问人数的位数
$dif = $len2 - $len1;
$rest = substr($str2, 0, $dif);
$string = $rest.$str1;
//位数如果不够$n位,在前面补0
for ($i=0;$i<=$n-1;$i++) {
$str[$i]=substr($string,$i,1);
};
//以数组存储每位数字
$font = 4;
来源:http://www.002pc.com/master/College/Programming/PHP/11579.html

收藏到:

关于《PHP教程.应用实例--7》文章的评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面

随机文章

    SQL Error: select * from ***_ecms_article where classid='86' and checked=1 order by rand() limit 10

顶出来的热门

    SQL Error: select * from ***_ecms_article where classid='86' and checked=1 order by diggtop desc,id desc limit 10
站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td