Heim > php教程 > php手册 > 一个别致的计数器

一个别致的计数器

WBOY
Freigeben: 2016-06-21 09:14:34
Original
975 Leute haben es durchsucht

计数器

如果你是网虫,或仅仅是一位网络编程的爱好者,你肯定曾经拥有过个人主页。或者充分发挥你的才华,制作出别具一格、让人耳目清爽的网页;或者收集了全天下的精品素材、教程、应用软件,完成了你的网络教室、天下软件大宝库的专业网站。也许你也曾经不非吹灰之力就申请到一个实用的计数器,发布到你自己的网站上,对自己的网站的访问流量一清二楚;也许你曾经花费了九牛二虎之力编写自己的网站计数器,随心所欲的编辑计数器的各项功能,不断的完成你想尽心统计的项目。但是,无论如何,拥有酷的计数器,就是一种享受、一种前所没有的满足。
(--以上内容仅代表用户的个人意见,并不代表本网站的立场--某某网站。:-D)

现在,普遍流行的计数器无非都是用CGI、ASP、PHP等篇写的一个统计网页被访问的次数服务器端运行程序。主要有包含在程序或者HTML代码中的内嵌的程序代码,或者引入到网页中的程序。本文介绍的就是用一个单独的程序生成一个gif图像,并且被包含到我们的主页中来(http://www.21php.com)。

本计数器的原理非常简单,只要懂一点C语言或者其他程序语言,就能完全看懂每一行程序代码;本程序将用户访问某个页面的数据按24小时分组,然后按照不同时段保存成一个数组(用逗号“,”分割),每当用户访问了该网页,当前时段的数据增加1,保存文件,并且按比例输出直方图;如果各位读者有兴趣,也可以参照原型不断的开发更加好用的网站计数器。
本计数器有两个要点:一是读取文件的数据。二是根据一定的算法将不同时段的访问量按照一定的比例做成图像,然后输出到浏览器上,进行显示。
以下是本计数器的源代码及作者波波的一些粗劣的讲解。


############################################################
#***** Counters *****#
#***** Writed by Boban *****#
#***** Program at 2000年11月23日 *****#
############################################################
//提交图片文件信息头
Header("Content-type:image/gif");
####
//宏定义,预先定义好打印文字的左边距ML的值为10
//可以自己根据调试的要求进行题调整。
define("ML",10); //left margin

$imgh=30;
$imgw=300;
$Visited=array();

//如果文件Counter不存在的话,则创建一个这个文件
if (!file_exists("Counter"))
{
for($i=0;$i$Visited[$i]=0;
$str=$Visited[0];
for($i=1;$i$str.=",$Visited[$i]";
//格式化数据,然后写入文件之中
$fp=fopen("Counter","w");
fputs($fp,$str);
fclose($fp);
}
else
{
//读出计数器的值
$fp=fopen("Counter","r");
$str=trim(fgets($fp,100));
$Visited=explode(",",$str);
//将数据转化成数组的格式输出
fclose($fp);
}

$Visited[date("G")]=intval($Visited[date("G")])+1;
//当前时间的访问量增加1
$max=intval($Visited[0]);
$str=$Visited[0];
for($i=1;$i{
$str.=",$Visited[$i]";
if($max$max=intval($Visited[$i]);
}
//找出最大的访问量
$fp=fopen("Counter","w");
fputs($fp,$str);
fclose($fp);

$img=imagecreate($imgw+1,$imgh*2+1);
$bgcolor=imagecolorallocate($img,255,255,255);
$textcolor=imagecolorallocate($img,255,0,0);
$linecolor=imagecolorallocate($img,99,99,99);

imagerectangle($img,0,0,$imgw,$imgh*2,$linecolor);
$sum=0;
for($i=0;$i{
imagefilledrectangle($img,ML+$i*12,$imgh-$Visited[$i]*25/$max,ML+$i*12+4,$imgh,$linecolor);
imagestring($img,1,ML+$i*12,$imgh+4,$i,$textcolor);
$sum+=$Visited[$i];
}
//以上是按比例输出直方图

imagestring($img,3,10,$imgh+15,"Total:$sum",$textcolor);
imagestring($img,3,$imgw/3,$imgh+15,"Design by 21PHP Work Studio",$textcolor);

imagegif($img);
imagedestroy($img);
//生成图像,清除内存
?
以上程序是在PHP+Apache的环境下运行的,使用时尚需注意以下事项:
1.程序运行的权限,请注意你的网页能否运行PHP程序。
2.文件读写的权限,因为程序运行过程中要进行程序的读写。而且一般情况下,Apache的运行权限是nobody,也就是说,只有最低的权限,所以最好新开一个目录,将它的权限设定为nobody,计数器的程序也放在这个目录里面。
以上程序的效果,可以到我的网站(http://www.21php.com)上看,如果需要源代码的,也可以到我们的网站下载源代码。文章也非常欢迎各大站点转载,只要注明“作者Boban及转自http://www.21php.com”即可。
Boban 2000年12月1日0:18分



Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage