您当前的位置: 首页 > 免费得5元微信现金红包编程 > PHP教程 > 用PHP生成访客计数器

用PHP生成访客计数器

作者:admin 来源:不详 发布时间: 2008-06-04 08:50 点击: 次
现在,上网的人越来越多,许多网友尝试着制作自己的主页,访客计数器是必不可少的一部分。虽然很多免费得5元微信现金红包提供免费的计数器,可毕竟不是自己亲手制作的?有的朋友可能认为它很难,不敢去尝试,其实有了PHP这个工具,它并不难,甚至可以说它很容易。 首先,让我

用PHP生成访客计数器

??? 现在,上网的人越来越多,许多网友尝试着制作自己的主页,访客计数器是必不可少的一部分。虽然很多免费得5元微信现金红包提供免费的计数器,可毕竟不是自己亲手制作的?有的朋友可能认为它很难,不敢去尝试,其实有了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的图像及图像所占用的系统资源。?
在自己的主页上可以这样调用这个计数器:?
下面是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()成为此主页的一部分,需要的时候,将加在需要计数器的地方就可以了。?
分享到:
本文"用PHP生成访客计数器"由远航站长收集整理而来,仅供大家学习与参考使用。更多免费得5元微信现金红包制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 广告合作 - 免费得5元微信现金红包声明 - 友情连接- 免费得5元微信现金红包地图 - 站点地图 - 返回顶部
Copyright ? 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与免费得5元微信现金红包编程等各类免费得5元微信现金红包制作教程.
官方QQ:445490277 免费得5元微信现金红包群:26680406 免费得5元微信现金红包备案号:豫ICP备07500620号-4