用php制作一个网页计数器,用PHP制作自己的计数器

本文介绍了如何使用PHP实现网站计数器,包括基于文件和数据库两种存储方式。对于文件计数,通过读写文本文件实现计数并格式化显示,同时提出了防止刷新导致计数不准确的解决方案。而基于数据库的计数,以MySQL为例,通过创建数据库和表来存储访问次数,同样提供了防止重复计数的方法。此外,还展示了文本显示和图形显示计数结果的方式,以及对图形显示所需的GD库的依赖。
摘要由CSDN通过智能技术生成

用PHP来实现计数器很简单,计数器的实现分为两个阶段:一是实现计数;二是实现数字的显示;而在实现计数时又有两种方式:一是基于文件的计数方式;二是基于数据库的计数方式。而在实现数字的显示也有两种方式:一是普通的文本显示;二是图形方式显示。下面就将这四种情况作一介绍:

一、计数

1.基于文件的计数

在这种方式下,用一个文件来存放访问数,这要求有一个权限至少为007的目录,这样httpd进程才能创建及写文件,你可以在你自己所拥有的目录中新建一个子目录,比如:visit_log,将其权限改为777。下面就是实现以文件计数的代码:

if(!file_exists("visit_log/counter.txt" )){

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

fwrite($fp,"000001");  //这里假设最大为6位,你可以根据需要修改

$counter="000001" ;

fclose($fp );

}  //检查counter.txt文件是否存在,如果不存在则新建一个文件,并且写入“00001”。

else{

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

$counter=fread($fp,6 );

//-----------------------------

$counter+=1 ;

//-----------------------------

fclose($fp );

switch(strlen($counter)){  //将counter变量格式化,这样显得美观

case 1 :

$counter="00000".$counter ;

break;

case 2 :

$counter="0000".$counter ;

break;

case 3 :

$counter="000".$counter ;

break;

case 4 :

$counter="00".$counter ;

break;

case 5 :

$counter="0".$counter ;

break;

}

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

fwrite($fp,$counter );

fclose($fp );

}

?>

以上代码就是基于文件计数的,不知道你有没有发现一个问题,即只要有人访问该页,无论他是刷新还是从你的网站的其它页跳转到该页,就会使数值加1,从而使主页计数失去了真实性。那么,这又怎么办呢?其实,有一个很简单的办法,即在返回到首页的链接上加上一个参数visited=1,比如:index.php?visited=1,在计数之前首先检查visited变量是否已赋值,若未赋值,计数器加1。当然,我们需要修改上面标注“---------------”的代码:

if(empty($visited)){

$counter+=1;

}

2.基于数据库的计数

我在这里选择的数据库是MySQL。我们首先要建一个数据库visit_log,然后在该数据库中建立一个表visit_counter,为了实现基本的计数功能,仅需要一个字段即可amount。操作如下:

(1)建立数据库visit_log

mysqladmin create visit_log –u root –p

正确输入root的密码后就可以建立visit_log数据库了。

(2)建立表visit_counter

mysql visit_log –u root –p

mysql>create table visit_counter (amount int(6));

mysql>insert into visit_counter(amount) values(0);

以下就是实现以数据计数的代码:

$cn=mysql_connect("localhost","root","******" );

mysql_select_db("visit_log",$cn );

$sql="select * from visit_counter" ;

$result=mysql_query($sql,$cn );

$record=mysql_fetch_array($result );

if(empty($visited )){

$counter=$record["amount"]+1 ;

$sql="update visit_counter set amount=$counter" ;

$result=mysql_query($sql,$cn );

}

mysql_close($cn );

switch(strlen($counter)){  //将counter变量格式化

case 1 :

$counter="00000".$counter ;

break;

case 2 :

$counter="0000".$counter ;

break;

case 3 :

$counter="000".$counter ;

break;

case 4 :

$counter="00".$counter ;

break;

case 5 :

$counter="0".$counter ;

break;

}?>

以上代码我就不多说了,都是MySQL的基本操作,实在不会到本站的“参考手册”下载一些关于MySQL的资料。

以上用两种方法实现了计数功能,细心的网友可能看出counter变量好像没有用处。其实它就是我们用来显示的变量。

二、计数的显示

1.文本显示

文本显示很简单,只要在想显示的地方插入以下代码:

当然,你可以增加改变其色彩等等。文本显示的一个优点就是加快下载时间,缺点是不够活泼。

2.图形显示

要使图形显示,上面的代码就不能和包含HTML编码的文件放在一起,这时我们可以另建一个文件叫showcounter.php,其代码如下:

$cn=mysql_connect("localhost","root","******" );

mysql_select_db("visit_log",$cn );

$sql="select * from visit_counter" ;

$result=mysql_query($sql,$cn );

$record=mysql_fetch_array($result );

if(empty($visited )){

$counter=$record["amount"]+1 ;

$sql="update visit_counter set amount=$counter" ;

$result=mysql_query($sql,$cn );

}

mysql_close($cn );

switch(strlen($counter)){  //将counter变量格式化

case 1 :

$counter="00000".$counter ;

break;

case 2 :

$counter="0000".$counter ;

break;

case 3 :

$counter="000".$counter ;

break;

case 4 :

$counter="00".$counter ;

break;

case 5 :

$counter="0".$counter ;

break;

}

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

$pic=imagecreate(50,17);  //创建图像

$bkcolor=ImageColorAllocate($pic,0,0,0);  //定义背景色

$fcolor=ImageColorAllocate($pic,0,255,0);  //定义字体颜色

imageline($pic,0,0,50,17,$bkcolor );

imagestring($pic,3,1,1,$counter,$fcolor );

ImageGif($pic );

ImageDestroy($pic );

?>

接着,在你想使用计数器的地方插入:即可。要注意的是你的PHP中必需安装GD库才能创建图形。 

利用数据库你可以写出一个功能强大的计数系统。比如,记录每一天的访问量、记录每一用户的访问次数等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值