用PHP生成访客计数器

计数器

现在,上网的人越来越多,许多网友尝试着制作自己的主页,访客计数器是必不可少的一部分。虽然很多网站提供免费的计数器,可毕竟不是自己亲手制作的?有的朋友可能认为它很难,不敢去尝试,其实有了PHP这个工具,它并不难,甚至可以说它很容易。

首先,让我来谈一谈访客计数器的思路:一位访问者浏览此页,服务器(如Apache)从一个文档(下文以num.txt为例)中读取该页已被浏览的次数,加一,然后存回num.txt,并在浏览器中显示加一后的次数。 如果又一位访问者浏览此页,服务器又重复上述过程,从而实现了访客计数器。

PHP没有直接的计数器函数,但利用它强大的功能,我们可以很容易地自己编写一个计数器。

现对程序需要用到的函数进行说明:

1. 打开文件操作:int fopen(string filename, string mode);

其中string filename 是要打开的文件名,必须为字符串形式。例如"num.txt"。

string mode 是打开文件的方式,必须为字符形式。

’r’,只读形式,文件指针指向文件的开头。

’r+’,可读可写,文件指针指向文件的开头。

’w’,只写形式,文件指针指向文件的开头,把文件长度截成0,如果文件不存在,将尝试建立文件。

’w+’,可读可写,文件指针指向文件的开头,把文件长度截成0,如果文件不存在,将尝试建立文件。

’a’,追加形式(只可写入),文件指针指向文件的最后,如果文件不存在,将尝试建立文件。

’a+’,可读可写,文件指针指向文件的最后,如果文件不存在,将尝试建立文件。

2. 读文件操作:string fgets(int fp, int length);

其中 int fp 是要读入数据的文件流指针,由fopen函数返回数值。

int length 是要读入的字符个数,实际读入的字符个数是length-1。

3. 写文件操作:int fputs(int fp, string str, int [length]);

其中int fp 是要写入信息的文件流指针,由fopen函数返回数值。

string str 是要写入文件的字符串。

int length 是写入的长度,可选,如果不选length,则整个串将被写入。否则,写入length长度个字符。

4. 关闭文件操作:int fclose(int fp);

其中int fp是fopen函数返回的文件流指针。

下面,我们来看一下计数器的原型:(假设num.txt文件存在)

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

//只读方式打开num.txt文件

$num = fgets($fp,5);

//读取4位数字

$num++;

//浏览次数加一

fclose($fp);

//关闭文件

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

//只写方式打开num.txt文件

fputs($fp, $str1);

//写入加一后结果

fclose($fp);

//关闭文件

echo "$num";

//浏览器输出浏览次数

?>

需要说明的是,这只是计数器的原型,它只能以文本方式显示次数,并不美观,而PHP具有极其强大的图像处理能力,用它可以很轻易的动态生成WEB图像。下面对上述原型加以修改,使之成为一个真正实用的计数器。

它的思路是这样的:用原型中的方法得到访问次数,把此数字转为标准格式,进行图象处理,并输出成图片,显示。

如果要生成记数图象,需要以下函数:

1. 字符串长度函数:int strlen(string str);

其中string str 是要计算长度的字符串。

2. 字符串相加:

如,把 $string1和$string2相加:

$string = $string1.$string2

3. 新建图像函数:int imagecreate(int x_size, int y_size);

其中x_size,y_size分别是新建图像的宽度和高度(以像素为单位)。

4. 颜色函数:int imagecolorallocate(int im, int red, int green, int blue);

其中int im 是图像识别号。

int red、green、blue分别是红绿蓝三种颜色的分量,取值范围 0 - 255,即相应颜色的RGB。

5. 给图像填充颜色的函数:int imagefill(int im, int x, int y, int col);

其中int x, int y为开始填充颜色的图像坐标,以图像的左上角为(0,0)。

int col是颜色的识别号。

6. 在图像中写入水平文字的函数:int imagestring(int im, int font, int x, int y, string s, int col);

其中int im 是图像的识别号。

int font 是字体识别号。

int x,int y 是开始写入字体的坐标,(0,0)为左上角。

string s 是要写入的字符串。

int col 是字体的颜色识别号。

7. 在图像中划直线的函数:int imageline(int im, int x1, int y1, int x2, int y2, int col);

其中int im 是图像的识别号。

int x1,int y1,int x2,int y2是划线的起止坐标。

int col 是线的颜色识别号。

8. 把图像输出成GIF格式的函数:int imagegif(int im, string filename);

其中int im 是图像的识别号。

string filename是生成图片的名字,可选,如果filename为空,则直接的输出。

9. 释放图像:int imagedestroy(int im);

其中int im 是要释放的图像识别号。

该函数释放识别号im的图像及图像所占用的系统资源。

在自己的主页上可以这样调用这个计数器:<img src="counter.php3">

下面是counter.php3的程序清单:

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

//定义输出为图像类型

$n=10;

//变量$n是显示位数

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

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

$str1++;

fclose($fp);

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

fputs($fp, $str1);

fclose($fp);

//同原型

$str2 = "";

$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;

//定义字号

$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);

//释放图象

?>

另外,为了方便,还可以用将计数器作为一个函数MyCounter(),这样只许需在主页开头加入require(“filename”);使MyCounter()成为此主页的一部分,需要的时候,将加在需要计数器的地方就可以了。

时间: 2024-12-22 01:34:47

用PHP生成访客计数器的相关文章

趣味访客计数器设计两则

计数器|设计 张 蕊 (烟台大学图书馆,264005) -------------------------------------------------------------------------------- ---- 访客计数器作为网站不可缺少的部分,不仅可以记录网站被访问的次数,而且可以通过生动有趣的设计来加强网页的趣味性和可观赏性,使访客计数器成为网页上的一个风景.下面介绍两种轻松设计趣味访客计数器的方法,希望对大家有所帮助. 一.素材准备---- 趣味访客计数器是将计数器的设计与

jQuery实现页面评论栏中访客信息自动填写功能的方法_jquery

首先简单说一说仿登陆的具体操作,用户第一次登陆时会出现用于填写评论者资料的框,当用户评论完成后,将会以 cookie 的方式记录评论者资料,一年后 cookie 自动清除,当用户再次评论时填写评论者资料的 div 将会隐藏,当用户点击" Change "时可以再次编辑评论者资料,同时 Change 字样会改为" Finish " ,点击 Finish 时填写评论者资料的 div 将会再次隐藏,同时 Change 字样将会改为 Change Again . 以下是分步

怎样提高网站访客量?

  小编推荐:用设计的方式让产品更受欢迎一直是产品人员孜孜以求的,像文章说的一个小改动就能增加70%的点击,是不是很有吸引力?让我们来学习下,也来搞个诱人的网站吧~ 怎么让访客待得更久并且不断回头?Webydo为你提供7项强大的建议. 让用户对网站设计满意仅仅是万里长征第一步.在网站上线后,还需要与几百万个其他网站争抢关注度,而你则需要想尽办法留住访客,让他们不断回头. 如何做到吸引人是用户体验设计中最为困难的一个方面,其不仅要求有高质量的内容,还要有巧妙.让人热血沸腾的方法来呈现内容. 如果你

网页色彩第一时间抓住访客

  色彩是一个网站的情绪表达方式或者说是性格特征的体现,每种颜色都有着属于自己的声音.作为一种视觉元素,色彩可以在第一时间抓住访客.本文从最基础的色彩本质.色彩搭配形式.及色彩对用户的潜在影响和心理暗示等着手,去分析色彩,谈色彩,让色彩帮设计师说话. 一.色彩的基础知识 色彩的三大要素 1.色相 我们最常见的色谱"虹"就是把颜色按照" 红 橙 黄 绿 青 蓝 紫 "依次过渡渐变,色相两端分别是暖色.冷色中间为中间色或中型色. 2.明度 明度就是色彩的明暗差别,如深红

五个简单的策略让访客成为回头客【德客易行网】

拥有回头客的网站所带来的曝光以及社群感是每一家小型企业都期望得到的.但是让用户对某个网站进行定期访问是一个挑战,尤其是更新不频繁或是你所更新的内容只是单调的新闻稿件或者产品公告时. 值得庆幸的是,创办一家"吸引力"足够使用户成为回头客的网站并不需要大量的投资或是将自己重塑为在线媒体帝国新秀.所需的一切只是一点点工作以及与客户进行接触,正如以下的简单策略那样,以采购网资讯为例子,每一条都是为了使你主页的日访问量飙升而存在: 联系与交流:博客应该是任何一家现代网站的重要组成部分,这点毋庸置

PV(访问量)、UV(独立访客)、IP(独立IP) (转)

网站统计中的PV(访问量):UV(独立访客):IP(独立IP)的定义与区别今天使用了雅虎统计,看到里面就有这个,就说说,其实里面的uv大家可能觉得很新奇,但是和站长统计里的独立访客是一样的嘛.--------首先来看看ip.uv和pv的定义----------PV(访问量):即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次.UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客.00:00-24:00内相同的客户端只被计算一次.IP(独立IP

如何确认访客所在的国家

在建设网站的时候,有时会遇到根据不同国家的访客显示不同信息的需求.尤其是网站所用语言的国际化要求,比如对美国的访客显示英语,对中国的访客显示中文. 有两种途径能够解决此问题. 一. 使用CultureInfo与RegionInfo类 1 2 3 4 5 6 7 public static string GetISORegionName(HttpRequest request) {     var lan = request.UserLanguages.First();     var cultu

五个简单的策略让访客成为回头客

拥有回头客的网站所带来的 曝光以及社群感是每一家小型企业都期望得到的.但是让用户对某个网站进行定期访问是一个挑战,尤其是更新不频繁或是你所更新的内容只是单调的新闻稿件或者产品公告时.值得庆幸的是,创办一家"吸引力"足够使用户成为回头客的网站并不需要大量的投资或是将自己重塑为在线媒体帝国新秀.所需的一切只是一点点工作以及与客户进行接触,正如以下的简单策略那样,每一条都是为了使你主页的日访问量飙升而存在:联系与交流:博客应该是任何一家现代网站的重要组成部分,这点毋庸置疑.毕竟,通过几次点击

为什么你的网站98%的访客都流失了?

我经常听到人们问:"我的站点有2%的客户转化率,这好吗?"他们应该问的是"为什么其他98%来访我站点的人不会转化成客户呢?" 知道这个问题的答案会告诉你你是否会变得更好,你如何变得更好.然后你就可以把时间花在"变得更好"这一部分上,而忘记其他公司的转化率是多少了. 这就是我们建立KISSinsights的主要原因--让我们和我们的顾客提供可以问"为什么"的问题的途径,而这些问题对分析学来说是一个强大的补充. 你或许不知道你站点