home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 October / CMCD1004.ISO / Software / Shareware / Programare / cnstats / cnt.php < prev    next >
Encoding:
Text File  |  2004-08-11  |  10.9 KB  |  252 lines

  1. <?                                             
  2. if (isset($_SERVER["DOCUMENT_ROOT"])) $CNSTATS_DR=$_SERVER["DOCUMENT_ROOT"];
  3. elseif (isset($HTTP_SERVER_VARS["DOCUMENT_ROOT"])) $CNSTATS_DR=$HTTP_SERVER_VARS["DOCUMENT_ROOT"];
  4. elseif (isset($DOCUMENT_ROOT)) $CNSTATS_DR=$DOCUMENT_ROOT;
  5.  
  6. if ($CNSTATS_DR[strlen($CNSTATS_DR)-1]!="/") $CNSTATS_DR.="/";
  7.  
  8. if (!isset($STATS_CONF["dbname"])) include $CNSTATS_DR."cnstats/config.php";
  9.  
  10. function cnstats_sql_query($query,$CONN) {
  11.     GLOBAL $LANG,$STATS_CONF,$COUNTER;
  12.  
  13.     if ($STATS_CONF["sqlserver"]="MySql") {
  14.         $r=@mysql_db_query($STATS_CONF["dbname"],$query,$CONN);
  15.         if (mysql_errno($CONN)!=0) {
  16.             if ($COUNTER["senderrorsbymail"]=="yes" && !empty($STATS_CONF["cnsoftwarelogin"])) {
  17.                 mail($STATS_CONF["cnsoftwarelogin"],"CNStats MySql Error",">A fatal MySQL error occured\n\n".mysql_error()."\nQuery:\n------------\n".$query."\n-----------\nURL: http://".$HTTP_SERVER_VARS["HTTP_HOST"].$HTTP_SERVER_VARS["REQUEST_URI"]."\nDate: ".date($LANG["datetime_format"]));
  18.                 }
  19.             die("<font color=red><B>A fatal MySQL error occured:</B></font><br><br>\n\n".mysql_error($CONN)."<br><br>\n\n ".$query);
  20.             }
  21.         }
  22.     return($r);
  23.     }
  24.  
  25. function nmail($CONN) {
  26.     GLOBAL $LANG,$COUNTER;
  27.  
  28.     $CONFIG=mysql_fetch_array(cnstats_sql_query("SELECT language FROM cns_config",$CONN));
  29.     include "lang/lang_".$CONFIG["language"].".php";
  30.  
  31.     $MAIL=mysql_fetch_array(cnstats_sql_query("SELECT mail_day, mail_email, mail_subject, mail_content FROM cns_config",$CONN));
  32.     if (!empty($MAIL["mail_email"])) {
  33.     
  34.         $need=0;$per=1;
  35.         if ($a["mail_day"]==0) {$need=1;$pper=$LANG["yesterday"];}
  36.         else if ($a["mail_day"]==date("d",time()+$COUNTER["timeoffset"])) {$need=1;$per=7;$pper=$LANG["last7dayes"];}
  37.     
  38.     
  39.         if ($need==1) {
  40.             $mail="";
  41.             if (($MAIL["mail_content"]&1)!=0) {
  42.                 $mail.=$LANG["attendanceper"]." $pper\n\n      ".$LANG["date"]."     ".$LANG["hostss"]."     ".$LANG["sessionss"]."      ".$LANG["hitss"]."\n-------------------------------------------\n";
  43.     
  44.                 $r=cnstats_sql_query("select LEFT(date,10) as dt,hits,hosts,users from cns_counter_total ORDER BY date desc LIMIT $per",$CONN);
  45.                 while (($a=mysql_fetch_array($r))) {
  46.                     $str=sprintf("%s %10d %10d %10d\n",$a["dt"],$a["hosts"],$a["sessions"],$a["hits"]);
  47.                     $mail.=$str;
  48.                     }
  49.                 }
  50.     
  51.             if (($MAIL["mail_content"]&2)!=0) {
  52.                 $mail.="\n>------------------------------------------\n\n".$LANG["yesterdayreferers"]."\n\n".$LANG["count"]."                         ".$LANG["Ppage"]."\n----------+--------------------------------\n";
  53.     
  54.     
  55.                 $t1=date("Y-m-d H:i:s",mktime(0,0,0,date("m"),date("d")-1,date("Y"))+$COUNTER["timeoffset"]);
  56.                 $t2=date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-1,date("Y"))+$COUNTER["timeoffset"]);
  57.                 $r=cnstats_sql_query("select referer,count(referer) as cnt from cns_log WHERE referer!='' AND date>='$t1' AND date<'$t2' group by referer order by 2 desc LIMIT 20",$CONN);
  58.                 while (($a=mysql_fetch_array($r))) {
  59.                     $a["referer"]=str_replace(" ","%20",$a["referer"]);
  60.                     while (strlen($a["cnt"])<10) $a["cnt"]=".".$a["cnt"];
  61.                     $str=sprintf("%s|%s\n",$a["cnt"],$a["referer"]);
  62.                     $mail.=$str;
  63.                     }
  64.                 }
  65.  
  66.             if (($MAIL["mail_content"]&4)!=0) {
  67.                 $mail.="\n>------------------------------------------\n\n".$LANG["Sspages"]."\n\n".$LANG["count"]."                         ".$LANG["Ppage"]."\n----------+--------------------------------\n";
  68.                 $r=cnstats_sql_query("select page,count(page) as cnt from cns_log WHERE page!='' AND date>='$t1' AND date<'$t2' group by page order by 2 desc LIMIT 20",$CONN);
  69.                 while (($a=mysql_fetch_array($r))) {
  70.                     while (strlen($a["cnt"])<10) $a["cnt"]=".".$a["cnt"];
  71.                     $a["page"]=str_replace(" ","%20",urldecode($a["page"]));
  72.                     $str=sprintf("%s|%s\n",$a["cnt"],$a["page"]);
  73.                     $mail.=$str;
  74.                     }
  75.  
  76.                 $mail=$mail."\n\nhttp://www.cn-software.com/cnstats/\n(c) ".$LANG["softname"]." by CN-Software\n\n".date("Y-m-d H:i:s",time()+$COUNTER["timeoffset"])."\n";
  77.                 }
  78.     
  79.             $MAIL["mail_subject"]=str_replace("%Y",date("Y",time()+$COUNTER["timeoffset"]),$MAIL["mail_subject"]);
  80.             $MAIL["mail_subject"]=str_replace("%d",date("d",time()+$COUNTER["timeoffset"]),$MAIL["mail_subject"]);
  81.             $MAIL["mail_subject"]=str_replace("%m",date("m",time()+$COUNTER["timeoffset"]),$MAIL["mail_subject"]);
  82.             mail($MAIL["mail_email"],$MAIL["mail_subject"],$mail,"From: \"CNStats\" <".$MAIL["mail_email"].">\nContent-type: text/plain; charset=windows-1251","-f".$MAIL["mail_email"]);
  83.             }
  84.         }
  85.     }
  86.  
  87. function midnight_calc() {
  88.     global $COUNTER;
  89.  
  90.     $r=cnstats_sql_query("SHOW TABLE STATUS",$COUNTER["CONN"]);
  91.     $size=0;
  92.     while ($a=mysql_fetch_array($r,MYSQL_ASSOC)) {
  93.         while (list ($key, $val) = each ($a)) {
  94.             if ($key=="Data_length" && (substr($tname,0,4)=="cns_")) $size+=$val;
  95.             if ($key=="Index_length" && (substr($tname,0,4)=="cns_")) $size+=$val;
  96.             if ($key=="Name") $tname=$val;
  97.             }
  98.         }
  99.     cnstats_sql_query("INSERT INTO cns_size SET date=NOW(), size='".$size."';",$COUNTER["CONN"]);
  100.  
  101.     $sdays=intval($COUNTER["savelog"]);if ($sdays<1 || $sdays>30) $sdays=30;
  102.     cnstats_sql_query("DELETE FROM cns_today",$COUNTER["CONN"]);
  103.     cnstats_sql_query("DELETE FROM cns_log WHERE date<'".date("Y-m-d H:i:s",mktime(0,0,0,date("m") ,date("d")-$sdays,date("Y"))+$COUNTER["timeoffset"])."'",$COUNTER["CONN"]);
  104.     nmail($COUNTER["CONN"]);
  105.     mysql_close($COUNTER["CONN"]);    
  106.     }
  107.  
  108. function stats_hit($sqlhost,$sqluser,$sqlpassword,$db_name) {
  109.     GLOBAL $HTTP_SERVER_VARS,$HTTP_COOKIE_VARS,$STATS_CONF,$COUNTER,$HTTP_GET_VARS;
  110.  
  111.     $noclose=false;
  112.  
  113.     $eip=ip2long($COUNTER["excludeip"]);
  114.     $emask=ip2long($COUNTER["excludemask"]);
  115.     if ((ip2long($HTTP_SERVER_VARS["REMOTE_ADDR"])&$emask)==($eip&$emask)) {
  116.         $CONN=mysql_connect($STATS_CONF["sqlhost"],$STATS_CONF["sqluser"],$STATS_CONF["sqlpassword"],TRUE);
  117.         mysql_select_db($STATS_CONF["dbname"],$CONN);
  118.         $r=mysql_query("SELECT t_hits,hits,hosts FROM cns_counter") or die(mysql_error());
  119.         $STATS_CONF=mysql_fetch_array($r,MYSQL_ASSOC);
  120.         mysql_close($CONN);
  121.         return;
  122.         }
  123.  
  124.     // Connecting to DB
  125.     if (version_compare(phpversion(), "4.2.0", ">=")) 
  126.         $CONN=@mysql_connect($STATS_CONF["sqlhost"],$STATS_CONF["sqluser"],$STATS_CONF["sqlpassword"],TRUE);
  127.     else
  128.         $CONN=@mysql_connect($STATS_CONF["sqlhost"],$STATS_CONF["sqluser"],$STATS_CONF["sqlpassword"]);
  129.  
  130.     if (!$CONN) return;
  131.     if (!@mysql_select_db($STATS_CONF["dbname"],$CONN)) return;
  132.  
  133.     $r=mysql_query("select GET_LOCK('cnstats',60);",$CONN);
  134.     if (mysql_result($r,0,0)!=1) return;
  135.     $r=cnstats_sql_query("SELECT DATE_FORMAT(last,'%d') FROM cns_counter",$CONN);
  136.  
  137.     if (mysql_result($r,0,0)!=date("d",time()+$COUNTER["timeoffset"])) {
  138.         $date=date("Y-m-d H:i:s",mktime(0,0,0,date("m")  ,date("d")-1,date("Y"))+$COUNTER["timeoffset"]);
  139.         $r=cnstats_sql_query("SELECT hits,hosts,users FROM cns_counter",$CONN);
  140.         cnstats_sql_query("UPDATE cns_counter SET hits=0, hosts=0, users=0, last='".date("Y-m-d H:i:s",time()+$COUNTER["timeoffset"])."';",$CONN);
  141.         for ($i=0;$i<mysql_num_rows($r);$i++) {
  142.             $hits=mysql_result($r,$i,0);
  143.             $hosts=mysql_result($r,$i,1);
  144.             $users=mysql_result($r,$i,2);
  145.             cnstats_sql_query("INSERT INTO cns_counter_total set hits='".$hits."',hosts='".$hosts."',date='".$date."', users='".$users."';",$CONN);
  146.             }
  147.         $COUNTER["CONN"]=$CONN;
  148.         $noclose=true;
  149.         register_shutdown_function("midnight_calc");
  150.         } /* of if (mysql_result( */
  151.  
  152.     $r=mysql_query("SELECT RELEASE_LOCK('cnstats');",$CONN);
  153.                  
  154.     $agent=mysql_escape_string(htmlspecialchars($HTTP_SERVER_VARS["HTTP_USER_AGENT"]));
  155.     $ip=$HTTP_SERVER_VARS["REMOTE_ADDR"];
  156.     $proxy="";
  157.     if (!empty($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])) {
  158.         $proxy=$ip;
  159.         $ip=$HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
  160.         }
  161.     $zpos=strrpos($ip,",");
  162.     if ($zpos!=0) $ip=trim(substr($ip,$zpos+1));
  163.     $ip=ip2long($ip);
  164.  
  165.     $zpos=strrpos($proxy,",");
  166.     if ($zpos!=0) $proxy=trim(substr($proxy,$zpos+1));
  167.     $proxy=ip2long($proxy);
  168.  
  169.     if ($HTTP_GET_VARS["cns"]=="get") echo "<!-- 22 -->";
  170.  
  171.     $c=intval($c);
  172.     $depth=intval($d);
  173.     if ($STATS_CONF["graph"]==1) {
  174.         $page=$STATS_CONF["page"];
  175.         $referer=$STATS_CONF["referer"];
  176.         }
  177.     else {
  178.         if (isset($STATS_CONF["page"])) $page=urlencode(htmlspecialchars($STATS_CONF["page"]));
  179.         else $page=urlencode(htmlspecialchars("http://".$HTTP_SERVER_VARS["HTTP_HOST"].$HTTP_SERVER_VARS["REQUEST_URI"]));
  180.  
  181.         if (isset($STATS_CONF["referer"])) $referer=htmlspecialchars($STATS_CONF["referer"]);
  182.         else $referer=htmlspecialchars($HTTP_SERVER_VARS["HTTP_REFERER"]);
  183.         }
  184.     $res=htmlspecialchars($rs);
  185.     $date=date("Y-m-d H:i:s",time()+$COUNTER["timeoffset"]);
  186.     $language=htmlspecialchars($HTTP_SERVER_VARS["HTTP_ACCEPT_LANGUAGE"]);
  187.  
  188.     $flag=0;
  189.     $r=cnstats_sql_query("SELECT count(*) FROM cns_today WHERE ip='$ip'",$CONN);
  190.     if ($r) $is=mysql_result($r,0,0);    else $is=0;    if ($is==0) {
  191.         cnstats_sql_query("INSERT INTO cns_today (ip) VALUES ('$ip')",$CONN);
  192.         $flag=1;
  193.         }
  194.  
  195.     // Geting user ID
  196.     if ($STATS_CONF["is_cookie"]==1) {
  197.         $uid=intval($HTTP_COOKIE_VARS["counter"]);
  198.  
  199.         if ($uid!=0) $type1=0;
  200.         else {
  201.             $r=cnstats_sql_query("select max(uid) from cns_log",$CONN);
  202.             $uid=mysql_result($r,0,0)+1;
  203.             $type1=1;
  204.             @setcookie("counter",$uid,mktime(23,59,59,date("m"),date("d"),date("Y")),"/",$STATS_CONF["cookie_host"]);
  205.             }
  206.         }
  207.     else $type1=$flag;
  208.  
  209.     // Get country for unique hosts
  210.     $country=0;
  211.     if ($flag==1) {
  212.         $nip=$HTTP_SERVER_VARS["REMOTE_ADDR"];
  213.         $zpos=strrpos($nip,",");
  214.         if ($zpos!=0) $nip=trim(substr($nip,$zpos+1));
  215.         $r=cnstats_sql_query("SELECT c FROM cns_countries WHERE INET_ATON('".$nip."')>=ip1 AND INET_ATON('".$nip."')<=ip2 LIMIT 1;",$CONN);
  216.         if (mysql_num_rows($r)==1)    $country=mysql_result($r,0,0);
  217.         }
  218.     cnstats_sql_query("INSERT DELAYED INTO cns_log (date,ip,type,proxy,page,agent,referer,language,type1,uid,res,depth,cookie,country) VALUES ('$date','$ip',$flag,'$proxy','$page','$agent','$referer','$language','$type1','$uid','$res','$depth','$c','".$country."')",$CONN);
  219.  
  220.     $r=cnstats_sql_query("SELECT hits,hosts,t_hits,t_hosts,users,t_users FROM cns_counter",$CONN);
  221.     if (mysql_num_rows($r)!=1) {
  222.         cnstats_sql_query("INSERT INTO cns_counter SET hits='1', hosts='1', t_hits='1', t_hosts='1', users='1', t_users='1'",$CONN);
  223.         $hits=1;
  224.         $hosts=1;
  225.         $t_hits=1;
  226.         $t_hosts=1;
  227.         }
  228.     else {
  229.         $hits=mysql_result($r,0,0)+1;
  230.         $t_hits=mysql_result($r,0,2)+1;
  231.         $hosts=mysql_result($r,0,1);
  232.         $t_hosts=mysql_result($r,0,3);
  233.         $users=mysql_result($r,0,4);
  234.         $t_users=mysql_result($r,0,5);
  235.         if ($flag==1) {
  236.             $hosts++;
  237.             $t_hosts++;
  238.             }
  239.         if ($type1==1) {
  240.         $users++;
  241.             $t_users++;
  242.             }
  243.         cnstats_sql_query("UPDATE cns_counter SET hits='$hits', hosts='$hosts', t_hits='$t_hits', t_hosts='$t_hosts', users='$users', t_users='$t_users', last='".date("Y-m-d H:i:s",time()+$COUNTER["timeoffset"])."';",$CONN);
  244.         }
  245.     $STATS_CONF["hits"]=$hits;
  246.     $STATS_CONF["hosts"]=$hosts;
  247.     $STATS_CONF["t_hits"]=$t_hits;
  248.     if (!$noclose) mysql_close($CONN);
  249.     }
  250.  
  251. stats_hit($STATS_CONF["sqlhost"], $STATS_CONF["sqluser"], $STATS_CONF["sqlpassword"], $STATS_CONF["dbname"]);
  252. ?>