A-A+

不同类型的PHP计数器经典范例

2013年11月17日 PHP源码分享 评论 4 条 阅读 629 views 次

五款不同类型的基于文本的php计数器,第一种:基于文件系统的页面计数器范例,将计数器放入到根目录下的 txt 文件中进行读取操作,这样做的好处是 txt 作为了一个小型的数据库,里面仅仅放了数字,在新来访一个访客或当我们刷新页面时,如刷新xiariboke.net页面, txt 里的数据便会++1,然后再通过 php 进行读取到页面,样式颜色可以自定义。需要在根目录新建 num.txt。


//基于文件系统的页面计数器范例

$countfile = "num.txt";
//定义计数器写入的文件是当前目录下count.txt,然后我们应当测试该文件能否打开
if (($fp = fopen($countfile, "r+")) == false) { //用读写模式打开文
件,若不能打开就退出
printf ("打开文件 %s 失败!",$countfile);
exit;
}
else
{
//如果文件能够正常打开,就读入文件中的数据,假设是1
$count = fread ($fp,10);
//读取10位数据
$count = $count + 1;
fclose ($fp);
//关闭当前文件
$fp = fopen($countfile, "w+");
//以覆盖模式打开文件
fwrite ($fp,$count);
//写入加1后的新数据
fclose ($fp);
//并关闭文件
echo '您好,您是第'. $count.'位访客';
}
?>

第二种:基于数据库的页面计数器范例,这一款数据库的读出方式和第一种是相当的,唯一不一样的就是将计数器存储到了数据库当中,新建一个专门放置数据的表 num,每一次的访客或重新刷新时进行 $counter+1 更新即可。


基于数据库的页面计数器范例

$db=mysql_connect("localhost","root","qwaszx");
$query="select * from num";
$result=mysql_db_query("test",$query);
if($result){
$r=mysql_fetch_array($result);
$counter=$r["NumValue"];
$counter=$counter+1;
$query='update num set NumValue='.$counter.' where id=1';
$result=mysql_db_query("test",$query);
mysql_close();
echo '您好,您是第'. $counter.'位访客';}
?>

第三种,页面分离计数器范例,其实这款php计数器跟第第一种是差不多的,只不过用 js 文件进行了调用,同样有一个专门的 php 文件来处理计数器,利用的是根目录下的 num.txt 文本来存储计数器。共三个文件。实例文件 demo.php


页面分离计数器范例

您好,您是第

位访客

php计数器文件:filecount.php

$countfile = "num.txt";
//定义计数器写入的文件是当前目录下count.txt,然后我们应当测试该文件能否打开
if (($fp = fopen($countfile, "r+")) == false) { //用读写模式打开文
件,若不能打开就退出
printf ("打开文件 %s 失败!",$countfile);
exit;
}
else
{
//如果文件能够正常打开,就读入文件中的数据,假设是1
$count = fread ($fp,10);
//xiariboke.net基础实例,读取10位数据
$count = $count + 1;
fclose ($fp);
//关闭当前文件
$fp = fopen($countfile, "w+");
//以覆盖模式打开文件
fwrite ($fp,$count);
//写入加1后的新数据
fclose ($fp);
//并关闭文件
echo " document.write(\"".$count."\")\n";
//用javascript形式输出数据
}
?>

第四种:基于文件的图形计数器范例,图形计数器我们见得应该是最多的了,相对于单调的数字计数器,要美观很多,可以自定义我们喜欢的图片,这款php图形计数器由根目录下的 num.txt 来保存数据,img/ 目录下保存 0.gif、1.gif、2.gif....9.gif 图形。实例代码如下:


图形页面计数器范例

$countfile = "num.txt";
//定义计数器写入的文件是当前目录下count.txt,然后我们应当测试该文件能否打开
if (($fp = fopen($countfile, "r+")) == false) { //用读写模式打开文
件,若不能打开就退出
printf ("打开文件 %s 失败!",$countfile);
exit;
}
else
{
//如果文件能够正常打开,就读入文件中的数据,假设是1
$count = fread ($fp,10);
//读取10位数据
$count = $count + 1;
fclose ($fp);
//关闭当前文件
$fp = fopen($countfile, "w+");
//以覆盖模式打开文件
fwrite ($fp,$count);
//写入加1后的新数据
fclose ($fp);
//并关闭文件
}
//$count转换为图片模式的代码
$fp = fopen ($countfile, "r"); //以只读模式打开文件
$array_count = 1; //定义一个表示数组元素位置的变量,下面要用
while (! feof($fp)) {
$current_number = fgetc($fp);
$counter_array[$array_count] = $current_number;
$array_elements = count ($counter_array);
$array_count = $array_count + 1;
}
//显示代码
echo ("
<t d align=\"center\">欢迎您,第"); for ($array_id = 1;$array_id < $array_elements; ++ $array_id) { echo (" n=absmiddle>"); } echo ("位客人

");
?>

第五种:基于文件的图形计数器范例,这款基于文件的图形计数器跟我们的图形验证码超像,用过验证码的phper都知道,验证码最后就是通过 http 头输出一个图形来,上面是我们的验证码,这里可以理解成,图形上的验证码换成我们的计数器就可以了。其中也包含了三个文件,数据保存到根目录下的 num.txt 文件中。

图形计数器范例文件:

//图形计数器范例您好,您是第位访客

php计数器的处理文件:

<?
Header("Content-type: image/gif");
//http头,告诉浏览器,这是一个GIF图片
$countfile = "num.txt";
//定义计数器写入的文件是当前目录下count.txt,然后我们应当测试该文件能否
打开
if (($fp = fopen($countfile, "r+")) == false) { //用读写模式打开文
//件,若不能打开就退出
printf ("打开文件 %s 失败!",$countfile);
exit;
}
else
{
//如果文件能够正常打开,就读入文件中的数据,假设是1
$count = fread ($fp,10);
//读取10位数据
$count = $count + 1;
fclose ($fp);
//关闭当前文件
$fp = fopen($countfile, "w+");
//以覆盖模式打开文件
fwrite ($fp,$count);
//写入加1后的新数据
fclose ($fp);
//并关闭文件
}
//定义输出为图像类型
$n=10;
//变量$n是显示位数
//利用上面的方法,取得访问人数并赋值给变量$str1 (程序略)
$str1=$count;
$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&#91;$i&#93;=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&#91;0&#93;,$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&#91;$i&#93;,$white);
};
//将每位写入图象,并以竖线分隔
ImageGif($im);
//图象输出
ImageDestroy($im);
//释放图象
?>

小提示:这里的计数器都比较简单,每个计数器文件里都有详细的注释,一个php计数器仅有几行代码即可完成,有了这几个不同类型的php计数器,对于一般的网站应用是足够的了。对于我们学习php计数器来说,也足够了。

4 条留言  访客:4 条  博主:0 条

  1. bing

    前台模板如何调用,求方法

  2. 射雕天龙

    收藏了

  3. 恋羽

    感觉用不到,而且这几种感觉在并发量高的时候都不好。还是用JS异步会好点

  4. 宿迁波仔博客

    这个计数器好多网站都在用,不过大多是企业站。

给我留言