不同类型的PHP计数器经典范例
五款不同类型的基于文本的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[$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); //释放图象 ?>
小提示:这里的计数器都比较简单,每个计数器文件里都有详细的注释,一个php计数器仅有几行代码即可完成,有了这几个不同类型的php计数器,对于一般的网站应用是足够的了。对于我们学习php计数器来说,也足够了。
前台模板如何调用,求方法
收藏了
感觉用不到,而且这几种感觉在并发量高的时候都不好。还是用JS异步会好点
这个计数器好多网站都在用,不过大多是企业站。