电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> PHP
用PHP生成访客计数器-PHP教程,PHP基础
作者:网友供稿 点击:22
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
现在,上网的人越来越多,许多网友尝试着制作自己的主页,访客计数器是必不可少的一部分。虽然很多网站提供免费的计数器,可毕竟不是自己亲手制作的?有的朋友可能认为它很难,不敢去尝试,其实有了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()成为此主页的一部分,需要的时候,将加在需要计数器的地方就可以了。


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·Windows下的PHP5.0安装配制详解-PHP教程,PHP安装
·PHP在XP下IIS和Apache2服务器上的安装-PHP教程,PHP应用
·最近忙于FTP,好站多多!有好多好东东哦!不敢独享!-PHP教程,PHP基础
·PHP 5.0 Pear安装方法-PHP教程,PHP安装
·PHP开发利器-PRADO 1.6(4)-PHP教程,PHP应用
·Sun Sparc Solaris 2.6 Apache-1.3.12+MySQL-3.23.5+PHP-3.0.15 安装记-PHP教程,PHP应用
·php5学习笔记(转)-PHP教程,PHP应用
·APACHE安装笔记-PHP教程,PHP安装
·PHP.MVC的模板标签系统(四)-PHP教程,PHP应用
·PHP.MVC的模板标签系统(二)-PHP教程,PHP应用

最新文章
·PHP源码-利用 QQWry.Dat 实现 IP 地址高效检索
·Php高手带路--问题汇总解答[2]
·PHPQQ编程(2):取QQ在线状态
·php5手动最简安装方法
·福利彩票幸运号码自动生成器
·PHP开发利器-PRADO 1.6
·在Apache 服务器上启用PHP支持
·Windows2000_pro下安装Apache+PHP4+My
·php文件上传的实现
·PHP开发框架的现状和展望




版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号