📄 stat.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 + -