文本计数器程序完整源码分享!! |
前段时间做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 环境下测试通过。可直接运行。
使用时可以灵活的决定显示的方式。也可以直接按照默认方式输出。
谢谢支持! |
|
|