首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP原创源码发布区 » 文本计数器程序完整源码分享!!  


  作者:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

  nqp@nqp.me
  4304410
  www.nqp.me

 

 发表:2006-05-27 05:58:10 阅读 4018 次 回复 6 次 得分6  |   字号 字色
文本计数器程序完整源码分享!!
 前段时间做BLOG,写了一个PHP文本计数器程序。可以实现今日访问计数和总访问计数功能。直接用了文本文件定点写入法,程序写的比较简洁,配有详细的注释,绝对100%可运行。在这里和大家分享·!~~~

 PHP初学者可以通过此例子学习PHP的文件操作。PHP高手也可以在此例子的基础上进行扩充功能,做出图片计数器、防刷计数器等,都很简单了。
-------------------------------------------------------
本源码为站长原创,欢迎一切形式的转载。
但为尊重作者劳动,转载请注明出处,谢谢。
-------------------------------------------------------

<?php
//本程序由17PHP.COM站长创建
//创建时间2006.3.11
//本程序为页面访问计数程序。采用纯文本存放信息,不要任何数据库支持
//本文件可以用include 或requier在需要计数的网页上包含
//欢迎访问www.17php.com获取更多支持和更新信息
//任何疑问,请联系rznqp@163.com  blog.17php.com

//本着开放源代码的自由精神,本程序欢迎下载使用和传播
//您可以对此程序作任何修改,但为尊重作者劳动,请保留
//此版权信息。本信息不会影响程序运行速度。

//--------------------------------------------------------
 
 //--设置计数器最大位数,9表示计数最大为--999999999,即(10亿-1)
 $max_bit=9;

 //存放访问次数的文本文件,文件名和路径可以自行设置
 //此文件如不存在程序会自动创建之,请勿手工创建
 $fname='counter.txt';

 //判断计数器文件是否存在,如不存在则创建之,并以当前时间初始化
 if(!file_exists($fname)){
 $fp=@fopen($fname,'x');
 if(!$fp){
  echo '创建文件失败(Failed to create File):'.$counter;
  exit;
  }
 //根据位数产生初始值
 $bits='0';
 for($i=1;$i<$max_bit;$i++) $bits.='0';
 fwrite($fp,'[startday]'.date('Y-m-d')."\n[totalvisit]$bits\n[todayvisit]$bits\n[todaydate]".date('Y-m-d')."\n");
 fclose($fp);
 }

//File read Function
//文件读取函数 getINI()
//本函数从文本文件中读取计数器信息

 function getINI($s1){
 global $fname;
  $fp=@fopen($fname,"r");
  if(!$fp){
   echo '打开文件失败:(Failed to open file:)'.$fname;
   exit;
  }
  while(!feof($fp)){
   $temp=fgets($fp);
   if(substr($temp,1,strlen($s1))==$s1){
 $value=trim(substr($temp,strlen($s1)+2,strlen($temp)-strlen($s1)-2));
 break;
    }
   }
  fclose($fp);
  return $value;
 }

//更新文本文件函数 WriteFile()
//Upload .txt File Function

 function WriteFile($s1,$num){
 global $max_bit,$fname;
 if($s1!="todaydate" and strlen($num)>$max_bit){
 echo '计数器已达最大位数,无法继续增加!';
 }else{
  $fp=@fopen($fname,"r+");
  if(!$fp){
   echo '打开文件失败:(Failed to open file:)'.$fname;
   exit;
  }
  while(!feof($fp)){
   $temp=fgets($fp);
   if(substr($temp,1,strlen($s1))==$s1){
 fseek($fp,ftell($fp)-strlen($temp));
 fwrite($fp,'['.$s1.']'.$num."\n");
 break;
    }
   }
  fclose($fp);
  }
 }

//将计数器值加一,并显示其结果函数
 function addone(){
   $totalcount=getINI('totalvisit');
   $todaycount=getINI('todayvisit');
   $todaydate=getINI('todaydate');
   $today=date("Y-m-d");
   if($todaydate==$today){
   $todaycount+=1;
   }else{
   $todaycount=1;
   WriteFile('todaydate',$today);
   }
   $totalcount+=1;
   WriteFile('todayvisit',$todaycount);
   WriteFile('totalvisit',$totalcount);
 }
 function showCount(){
   $totalcount=getINI('totalvisit');
   $todaycount=getINI('todayvisit');
   echo 'Visit Count: 今日访问:<b>'.$todaycount.'</b>';
   echo '  总访问量:<b>'.$totalcount.'</b>';
   echo '  始于:'.getINI('startday');
   echo '  文本计数器Powered By<a href=http://www.17php.com>17PHP.COM</a>';
}

//使用上面的函数,测试运行结果
//根据自己的需要调用函数得到计数器信息即可

addone();  //刷新计数器
showCount();   //按照标准格式输出计数信息
//---------自定义格式输出------------------------------------------------//
// echo getINI('todayvisit');  //直接输出今日访问数
// echo getINI('totalvisit');  //直接输出总访问数
// echo getINI('startday');    //直接输出开始日期
//----------------------------------------------------------------------//
?>


以上程序在 PHP5 环境下测试通过。可直接运行。
使用时可以灵活的决定显示的方式。也可以直接按照默认方式输出。

谢谢支持!
 
 1#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 1#楼 发表于2006-05-27 06:01:18  评分:× 

说明:

 上面的代码中,个别语句很长,但是篇幅有限,因此自动换行了。读者应注意区分,要不然可能产生错误。
 2#楼  
 
  回复人:天下独绝
  注册时间:2008-11-16
  主题/回复:0/3
  积分:26
  等级:★(二级)
  称号:初出茅庐

用户联系方式已设置为保密
 2#楼 发表于2008-11-16 01:15:22  评分:5 

回复给楼主(一起PHP)

最好做个zip/gz 文件直接下载多好呀!省得 C & P 了!
 3#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 3#楼 发表于2008-11-17 10:33:24  评分:× 

回复给2#楼:天下独绝
呵呵,有道理。
 4#楼  
 
  回复人:zhujia106
  注册时间:2010-12-28
  主题/回复:0/3
  积分:27
  等级:★(二级)
  称号:初出茅庐

   
 4#楼 发表于2010-12-28 10:41:50  评分:1 

回复给楼主(一起PHP)


能不能帮忙写个程序呀
 5#楼  
 
  回复人:zhujia106
  注册时间:2010-12-28
  主题/回复:0/3
  积分:27
  等级:★(二级)
  称号:初出茅庐

   
 5#楼 发表于2010-12-28 10:48:39  评分: 

回复给2#楼:天下独绝



能不能帮忙写个程序呀
 6#楼  
 
  回复人:zhujia106
  注册时间:2010-12-28
  主题/回复:0/3
  积分:27
  等级:★(二级)
  称号:初出茅庐

   
 6#楼 发表于2010-12-28 10:52:27  评分: 

回复给1#楼:一起PHP


给写个文本网络计数器程序完整源码

最好带上设计分析、各模块的功能和程序说明及程序结构
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.013sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版