首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 冲浪宝典
PHP教程.应用实例8-PHP教程,PHP应用
作者:网友供稿 点击:176
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
php下定制自己的记数器
计数器是让 web 访客知道该网页或者网站的人气指数最直接的方法,同时,访客人数也是给广告商做广告的最好依据。虽然很多网站都提供免费的计数器,可毕竟不是自己亲手制作的,不能体现出自己的特色。下面就php环境下记数器的制作过程进行详细的讨论。

访客计数器的流程如下:

第一位使用者浏览某页。

服务器程式从资料库或档案中读取该页被浏览次数。

将次数加一储存,并将它送回第一位使用者。

下一位使用者浏览某页。

服务器程式从资料库或档案中读取该页被浏览次数。

将次数再加一储存,并将它送回下一位使用者。

php中没有直接的计数器函数,但利用它强大的功能,我们可以很容易地自己编写一个计数器。计数器的实现分为两个阶段:一是实现计数;二是实现数字的显示。在实现计数时又有两种方式:一是基于文件的计数方式;二是基于数据库的计数方式。同样在实现数字的显示上也有两种方式:一是普通的文本显示;二是图形方式显示。下面就分别将这四种情况作一一介绍.

一、计数的实现

1.基于文件的计数

原理:把以往的访问人数记录在一个文本文件中,当网页被访问的时候,打开该文件并从中读出以往的访问人数,加 1,得到最新的访问人数,再把最新的访问数字回写到纪录访问人数的文件中。
实现;

<?php

$counterfile = "counter.txt";
if (!file_exists($counterfile)) {
//判断文件是否存在
$fp = fopen($counterfile, "w");
fputs($fp, "0");
fclose($fp);
}
//读文件
$n=10;
$fp = fopen($counterfile, "r");
$str1 = fgets($fp,$n);
$str1++;
fclose($fp);
//回写文件
$fp = fopen($counterfile, "w");
fputs($fp, $str1);
fclose($fp);

?>


程序说明:在浏览到本页时,php 程式先找寻 counter.txt 文件是否存在,若不存在,则建立一个 counter.txt 文件,并将 0 写入文件。然后读取 counter.txt 文件的内容,并将读出的数字加一,然后回写到文件中。

2、基于数据库的计数

原理:把访问人数记录在一个数据库中,当网页被访问的时候,从数据库中读出以往的访问人数,加 1,得到最新的访问人数,再把最新的访问数字回写到数据库中。

实现:假设数据库为mysql数据库,名为xinxiku,先建一数据表count,表字段中仅有counter一个字段,默认值为0,来记录访问人数。

<?php

//连接数据
$db=mysql_connect("localhost","root","");
mysql_select_db("xinxiku",$db);
//更新访问人数
$result=mysql_query("update count set counter=counter+1",$db);

?>


程序说明:访问者在浏览到本页时,首先连接到数据库,并把记数字段用原值加1来进行更新操作,实现访问数的递增。

二、记数的显示

1、普通的文本方式显示

这种显示方法很简单,在需要显示记数的地方直接输出即可。以上面的例子分别说明:

基于文件的计数,直接输出变量str1的内容即可。
<?php echo $str1 ; ?>

基于数据库的计数,首先从数据库中读出,然后再输出。

<?php

//查询数据库
$sql="select * from count";
$result=mysql_query($sql,$db);
//取得记录集
$record=mysql_fetch_array($result);
//取得访问人数
$str1=$record["counter"];
echo $str1;

?>


同样,你也可以用html语句像 <font color size>等对输出的数字进行修饰。文本显示的优点是减少下载时间,浏览速度快。缺点是显示方式不够活泼。

2、图形方式显示

原理:把读出的访问数据格式化成标准的格式,然后利用php提供的图像处理函数,把数字输出成图片格式。这样,数字的显示格式可以随意控制,真正能体现出自己的特色来。

实现:

<?
header("content-type: image/gif");
//定义输出为图像类型
$n=10;
//变量$n是显示位数

//利用上面的方法,取得访问人数并赋值给变量$str1 (程序略)
$str1=取得访问人数的值
$str2 = "";
//位数如果不够$n位,在前面补0
$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);
//释放图象
?>


输出图形如图如示:


函数说明:

imagecreate(int x_size, int y_size):建立一张全空的图形。参数 x_size、y_size 为图形的尺寸,单位为像素 (pixel)。

imagecolorallocate(int im, int red, int green, int blue):用来匹配图形的颜色,供其它绘图函数使用。参数 im 表示图形的 handle。参数 red、green、blue 是色彩三原色,其值从 0 至 255。

imagefill(int im, int x, int y, int col):将图片坐标 (x,y) 所在的区域着色。参数 col 表示欲涂上的颜色。

imagestring(int im, int font, int x, int y, string s, int col):在图片上绘出水平的横式字符串。参数 font 为字形,设为 1 到 5 表示使用默认字形。参数 x、y 为字符串起点坐标。字符串的内容放在参数 s 上。参数 col 表示字符串的颜色。

imageline(int im, int x1, int y1, int x2, int y2, int col):在图形上画出一条实线。从 x1、y1 连接到 x2、y2,原点 (0,0) 为图形的左上角。参数 col 为实线的颜色。

imagegif(int im, string [filename]):建立一张 gif 格式图形。参数 im 为使用 imagecreate() 所建立的图片代码。

imagedestroy(int im):将图片 handle 解构,释于内存空间。

三、结束语

1、上述代码如果直接放在文件头,那么只要有人访问该页,无论是刷新还是从网站的其它页跳转到该页,就会使计数值加1,从而使主页计数失去了真实性。有两个很简单的办法可以解决。


a、在返回到该页的链接上传递一个参数flag,比如:index.php?flag=1,在计数之前首先检查flag变量是否已赋值,若未赋值,计数器加1。否则不加。

if(empty($flag)){
$counter+=1;
}


b、用session记录一标志flag,在记数前先判断flag是否已赋值,如果没赋值,则记数加1,并给flag赋值,否则,记数器不变。

if (!isset($flag))
{
//处理记数器加1语句
...
//赋值flag
session_start();
session_register("flag");
$flag=1;
}


2、为了方便,可以将计数器作为一个函数mycounter(),这样只许需在主页开头加入require("filename"); 使mycounter()成为此主页的一部分,需要的时候,将<? mycounter();?>加在需要计数器的地方显示就可以了。

3、利用图形显示计数器时,在需要的地方直接插入:<img src="counter.php" border=0>即可。但要注意的是php中必须安装gd库才能利用php中的图像处理函数。


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·在VB中使用IE的 WebBrowser控件改进界面设计-.NET教程,VB.Net语言
·ASP 生成 XBM 图可用作验证码-ASP教程,ASP应用
·Java IO学习基础之读写文本文件-JSP教程,Java技巧及代码
·Java对象与XML文件之间相互转化(含源代码)-JSP教程,Java技巧及代码
·数字电视机顶盒(二)
·几个C#编程的小技巧 (一)-.NET教程,C#语言
·PHP教程.应用实例8-PHP教程,PHP应用
·自动填充固定行数的 GridView-.NET教程,数据库应用
·用表格巧妙制作导航条按钮-网页设计,Dreamweaver
·JSP的环境引擎--websphere-JSP教程,Jsp/Servlet
最新文章
·王顺铨:站在消费者角度看互联网_站长访谈
·把个人网站转变为商业网站全攻略_站长心得
·创业者与vc的接触之道_站长心得
·photoshop滤镜轻松制作照片柔光效果_photoshop教程
·草根站长离精英还很远很远,厦门站长大会感受_站长心得
·合理的网页设计具有哪些特征_站长心得
·谈谈网站设计的10个要点1_站长心得
·幽灵现象 新网站google排名不稳定的根源_google推广
·我告诉你怎么学搜索_google推广
·google搜索从入门到精通_google推广
相关主题
  • PHP教程.应用实例17-PHP教程,PHP应用
  • PHP教程.应用实例18-PHP教程,PHP应用
  • PHP教程.应用实例16-PHP教程,PHP应用
  • PHP教程.应用实例15-PHP教程,PHP应用
  • PHP教程.应用实例14-PHP教程,PHP应用
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭