|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
然后大吼:别人可以,我为什么就不可以?(是不是有点阎罗教练的味道,默默的确是电影看多了,抽嘴巴是会痛的,各位其实明白这个道理了就行了)
计数器是让 Web 访客晓得该网页或网站的人气指数最直接的办法,同时,访主人数也是给告白商做告白的最好根据。固然良多网站都供应收费的计数器,可究竟不是本人亲手制造的,不克不及表现出本人的特征。上面就PHP情况下记数器的制造进程停止具体的会商。
访客计数器的流程以下:
第一名利用者阅读某页。
办事器程式从材料库或档案中读取该页被阅读次数。
将次数加一贮存,并将它送回第一名利用者。
下一名利用者阅读某页。
办事器程式从材料库或档案中读取该页被阅读次数。
将次数再加一贮存,并将它送回下一名利用者。
PHP中没有直接的计数器函数,但使用它壮大的功效,咱们可以很轻易地本人编写一个计数器。计数器的完成分为两个阶段:一是完成计数;二是完成数字的显示。在完成计数时又有两种体例:一是基于文件的计数体例;二是基于数据库的计数体例。一样在完成数字的显示上也有两种体例:一是通俗的文本显示;二是图形体例显示。上面就分离将这四种情形作逐一引见.
1、计数的完成
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来停止更新操作,完成会见数的递增。
2、记数的显示
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 解构,释于内存空间。
3、停止语
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中的图象处置函数。
会HTML吗?会,我能编好几个大表格排板的网页啦! |
|