⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stat.php

📁 JSP流量统计系统
💻 PHP
字号:
<?
#Include the CLASS DB_Sql file
include "./db_mysql.inc";

#Functions area

function getmaxid($cdb,$tbl_name)
{
   $sqlstr = "select max(id) as maxid from $tbl_name";
   if (!($cdb->query($sqlstr))) die("Select maxid error!\n");

   $cdb->next_record();
   if ($cdb->Record["maxid"])
   {
      $nextid = $cdb->Record["maxid"] + 1;
   }
   else
   {
      $nextid = 1;
   }

   return $nextid;
}

function output($uid)
{
   $strOut = "<a href='http://202.106.186.28/stat/view.php?uid=$uid' target='_BLANK'>";
   $strOut .= "<img src='http://202.106.186.28/stat/stat.gif' border=0></a>";
   echo "document.write(\"$strOut\");";
}
#Functions area END

#Get parameters
if (!$uid) die("No uid Error!\n!");

#Using CLASS DB_Sql

$cdb = new DB_Sql;
$sqlstr = "select username from userinfo where UID = ".$uid;

if(!($cdb->query($sqlstr))) die("Query UID error!\n");

if ($cdb->num_rows() < 1) die("Fetch username error!\n");

$cdb->next_record();
$username = $cdb->Record["username"];
$usercode = substr($username,0,4);

#Check if the user folks this system
$ip = getenv("REMOTE_ADDR");
$referer = getenv("HTTP_REFERER");

$currdate = date("Y-m-d H:i:s");
$sqlstr = "select (unix_timestamp(now())-unix_timestamp(Date))";
$sqlstr .= " as datediff from statdetail ";
$sqlstr .= "where uid = $uid and IP = '$ip' order by Date DESC limit 1";
$cdb->query($sqlstr);
if ($cdb->next_record())
{
   $diff = $cdb->Record["datediff"];
   if ($diff < 600)
   {
      output($uid);
      exit(); 
   }
}

if (!eregi("202\.106\.186\.28|home4u\.china\.com",$referer))
{
   output($uid);
   exit();
}

$sqlstr = "select * from stat where uid=".$uid;
if (!($cdb->query($sqlstr))) die("Fetch from stat error!\n");

#Record the total hits of one day and the sum
if (($rows=$cdb->num_rows())<1)
{
   #This is new user
   $nextid = getmaxid($cdb,"stat");

   $currdate=date("Y-m-d H:i:s");
   $todaydate=date("Y-m-d")." 00:00:00";
   $sqlstr = "insert into stat(id,uid,starttime,totalhits,sitetype,";
   $sqlstr = $sqlstr . "todayhits,maxhits,todaydate) values(";
   $sqlstr = $sqlstr . "$nextid,$uid,'$currdate',1,'$usercode',";
   $sqlstr = $sqlstr . "1,1,'$todaydate')";

   if(!($cdb->query($sqlstr))) die("Insert error!\n");
}
else
{
   $cdb->next_record();
   $totalhits = $cdb->Record["totalhits"] + 1;
   $todayhits = $cdb->Record["todayhits"];
   $id = $cdb->Record["id"];

   $currdate=date("Y-m-d")." 00:00:00";
   if ($cdb->Record["todaydate"] != $currdate)
   {
      $newday = 1;
      $todayhits = 1;
   }
   else
   {
      $todayhits = $todayhits + 1;
      if ($todayhits > $cdb->Record["maxhits"])
      {
	 $updatemax = 1;
	 $maxhits = $todayhits;
      }
   }

   if ($newday)
   {
      $sqlstr = " update stat set totalhits = $totalhits, ";
      $sqlstr = $sqlstr . " todayhits = $todayhits, ";
      $sqlstr = $sqlstr . " todaydate = '$currdate' ";
      $sqlstr = $sqlstr . " where uid = $uid and id = $id ";

      if (!($cdb->query($sqlstr))) die("Update Error!\n");
   }
   else
   {
      if ($updatemax)
      {
	 $sqlstr = " update stat set totalhits = $totalhits, ";
	 $sqlstr = $sqlstr . " todayhits = $todayhits, ";
	 $sqlstr = $sqlstr . " maxhits = $maxhits ";
	 $sqlstr = $sqlstr . " where uid = $uid and id = $id ";

	 if (!($cdb->query($sqlstr))) die("Update Error!\n");
      }
      else
      {
	 $sqlstr = " update stat set totalhits = $totalhits, ";
	 $sqlstr = $sqlstr . " todayhits = $todayhits ";
	 $sqlstr = $sqlstr . " where uid = $uid and id = $id ";

	 if (!($cdb->query($sqlstr))) die("Update Error!\n");
      }
   }

}

#Record the detailed accesses
$ip = getenv("REMOTE_ADDR");
$agent = getenv("HTTP_USER_AGENT");

#echo "The referer is-- $referer<br>";

$browser = '';
$os = '';

#Browser info
if (eregi("msie (\d)|msie/(\d)|internet explorer/(\d)",$agent,$parts))
{
   $browser = "MSIE $parts[1]";
}
elseif (eregi("msie|microsoft",$agent,$parts))
{
   $browser = "MSIE";
}
elseif (eregi("opera",$agent,$parts))
{
   if (eregi("opera/(\d)|opera (\d)",$agent,$parts))
   {
      $browser = "Opera $parts[1]";
   }
   else
   {
      $browser = "Opera"; 
   }
}
elseif (eregi("ncsa|mosaic",$agent,$parts))
{
   $browser = "Mosaic";
}
elseif (eregi("lynx",$agent,$parts))
{
   $browser = "Lynx";
}
elseif (eregi("mozilla/(\d)",$agent,$parts))
{
   $browser = "Netscape $parts[1]";
}
else
{
   $browser = "Other" ;
}

#OS info
if (eregi("win",$agent,$parts))
{
   if (eregi("win95|windows 95|windows95|win 95",$agent,$parts))
   {
      $os = "Windows 95";
   }
   elseif (eregi("win98|windows 98|windows98|win 98",$agent,$parts))
   {
      $os = "Windows 98";
   }
   elseif (eregi("winnt|windowsnt|windows nt|win nt",$agent,$parts))
   {
      $os = "Windows NT";
   }
   elseif (eregi("windows 3.1|win3.1|win 3.1",$agent,$parts))
   {
      $os = "Windows 3.1";
   }
   else
   {
      $os = "Windows";
   }
}
elseif (eregi("mac",$agent,$parts))
{
   if (eregi("ppc|powerpc",$agent,$parts))
   {
      $os = "Mac PowerPC";
   }
   elseif (eregi("imac",$agent,$parts))
   {
      $os = "IMac";
   }
   else
   {
      $os = "Mac";
   }
}
elseif (eregi("x11",$agent,$parts))
{
   if (eregi("hp-ux",$agent,$parts))
   {
      $os = "UNIX (HP-UX)";
   }
   elseif (eregi("linux",$agent,$parts))
   {
      $os = "Linux";
   }
   elseif (eregi("sunos",$agent,$parts))
   {
      $os = "UNIX (SunOS)";
   }
   elseif (eregi("bsd",$agent,$parts))
   {
      $os = "UNIX (BSD)";
   }
   elseif (eregi("aix",$agent,$parts))
   {
      $os = "UNIX (AIX)";
   }
   elseif (eregi("osf1",$agent,$parts))
   {
      $os = "UNIX (OSF1)";
   }
   elseif (eregi("irix",$agent,$parts))
   {
      $os = "UNIX (IRIX)";
   }
   else
   {
      $os = "UNIX";
   }
}
else
{
   $os = "Other";
}

#Check if it is a new month,if so,delete all detail info of the UID
$sqlstr = "select count(*) as total from statdetail where uid = $uid";
$cdb->query($sqlstr);
$cdb->next_record();
$countall=$cdb->Record["total"];
if ($countall > 100)
{
   $sqlstr = "select min(id) as minid from statdetail where uid = $uid ";
   $cdb->query($sqlstr);
   $cdb->next_record();
   $minid = $cdb->Record["minid"];
   $sqlstr = "delete from statdetail where uid = $uid and id = $minid ";
   $cdb->query($sqlstr);
}

#Update detailed access info
$nextid = getmaxid($cdb,"statdetail");
#$currdate=date("Y-m-d H:i:s");
if($countall >= 100){
$sqlstr = "select * from statdetail where uid=$uid order by Date limit 1";
$cdb->query($sqlstr);
$cdb->next_record();
$id=$cdb->Record["id"];

$sqlstr = "update statdetail set Date=now(),IP='$ip',Browser='$browser',OS='$os',Referer='$referer' where id=$id";
}
else{
$sqlstr = "insert into statdetail(id,uid,Date,IP,Browser,OS,Referer) values(";
$sqlstr = $sqlstr . "$nextid,$uid,now(),'$ip','$browser',";
$sqlstr = $sqlstr . "'$os','$referer')";
}

if(!($cdb->query($sqlstr))) die("Insert error!\n");

#Update the statistics data:
$week[0] = "Sunday";
$week[1] = "Monday";
$week[2] = "Tuesday";
$week[3] = "Wednesday";
$week[4] = "Thursday";
$week[5] = "Friday";
$week[6] = "Saturday";

$week_field = $week[Date("w")];

$month[1] = "Jan";
$month[2] = "Feb";
$month[3] = "Mar";
$month[4] = "Apr";
$month[5] = "May";
$month[6] = "Jun";
$month[7] = "Jul";
$month[8] = "Aug";
$month[9] = "Sep";
$month[10] = "Oct";
$month[11] = "Nov";
$month[12] = "Dece";

$datearray = getdate(time());
$month_field = $month[$datearray["mon"]];


$sqlstr = "Select * from weekstat where UID = ".$uid;
if(!($cdb->query($sqlstr))) die("Query UID error!\n");

if ($cdb->num_rows() < 1)
{
   $nextid = getmaxid($cdb,"weekstat"); 
   $sqlstr = "insert into weekstat values($nextid,$uid,0,0,0,0,0,0,0)";
   if (!($cdb->query($sqlstr))) die("Insert error!\n");
}

$sqlstr = "update weekstat set $week_field = $week_field + 1 ";
$sqlstr = $sqlstr . " where uid = $uid ";

if (!($cdb->query($sqlstr))) die("Update error!\n");

#Update yearstat data
$sqlstr = "Select * from yearstat where UID = ".$uid;

if(!($cdb->query($sqlstr))) die("Query UID error!\n");

if ($cdb->num_rows() < 1)
{
   $nextid = getmaxid($cdb,"yearstat");
   $sqlstr = "insert into yearstat values($nextid,$uid,";
   $sqlstr = $sqlstr . "0,0,0,0,0,0,0,0,0,0,0,0)";
   if (!($cdb->query($sqlstr))) die("Insert error!\n");
}

$sqlstr = "update yearstat set $month_field = $month_field + 1 ";
$sqlstr = $sqlstr . " where uid = $uid ";

if (!($cdb->query($sqlstr))) die("Update error!\n");

output($uid);
?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -