home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 October / CMCD1004.ISO / Software / Shareware / Programare / cnstats / reports / log.php < prev    next >
Encoding:
PHP Script  |  2004-07-16  |  11.8 KB  |  271 lines

  1. <?php
  2.  
  3. $by=intval($HTTP_GET_VARS["by"]);
  4. $filter=$HTTP_GET_VARS["filter"];
  5.  
  6. $qs=RemoveVar("stm",str_replace("&","&",$HTTP_SERVER_VARS["QUERY_STRING"]));
  7. $qs=RemoveVar("ftm",$qs);
  8. $qs=RemoveVar("st",$qs);
  9. $qs=RemoveVar("start",$qs);
  10.  
  11. $DATELINK="&".RemoveVar("start",RemoveVar("sd",RemoveVar("fd",$qs)));
  12.  
  13. function CustomSelect($name,$add="") {
  14.     GLOBAL $HTTP_GET_VARS,$LANG;
  15.  
  16.     print "<SELECT style=\"width:100%\" OnChange=\"javascript:eSelect(this.value,'inp_".$name."')\" name=\"sel_".$name."\" id=\"sel_".$name."\"".$add.">\n";
  17.     print "<OPTION value=\"0\" ".($HTTP_GET_VARS["sel_".$name]=="0"?"SELECTED":"").">".$LANG["log_any"]."\n";
  18.     print "<OPTION value=\"1\" ".($HTTP_GET_VARS["sel_".$name]=="1"?"SELECTED":"").">".$LANG["log_like"]."\n";
  19.     print "<OPTION value=\"2\" ".($HTTP_GET_VARS["sel_".$name]=="2"?"SELECTED":"").">".$LANG["log_notlike"]."\n";
  20.     print "</SELECT>\n";
  21.     }
  22.  
  23. function CustomInput($name,$add="") {
  24.     GLOBAL $HTTP_GET_VARS,$LANG;
  25.  
  26.     if ($HTTP_GET_VARS["sel_".$name]==0) $ds="disabled "; else $ds="";
  27.     print "<input ".$ds."type=\"text\" style=\"width:100%\" id=\"inp_".$name."\" name=\"inp_".$name."\" value=\"".cnstats_mhtml($HTTP_GET_VARS["inp_".$name])."\"".$add.">";
  28.     }
  29.  
  30. ?>
  31. <STYLE>
  32. <!--
  33. .vis1 { visibility:visible; display:inline; }
  34. .vis2 { visibility:hidden; display:none; }
  35. //-->
  36. </STYLE>
  37.  
  38. <SCRIPT Language="JavaScript" type="text/javascript">
  39. <!--
  40. function eSelect(t,e) {
  41.     var el=document.getElementById(e);
  42.     if (el) {
  43.         if (t==0) el.disabled=true; else el.disabled=false;
  44.         }
  45.     }
  46.  
  47. function EnaDis(elid,is) {
  48.     var s=document.getElementById(elid);
  49.     if (s) s.disabled=is;
  50.     
  51.     }
  52.  
  53. function eCountry(t) {
  54.     EnaDis("sel_country",!t);
  55.     if (t) {
  56.         var s=document.getElementById("sel_country");
  57.         EnaDis('inp_country',(s.value==0)?true:false);
  58.         }
  59.     else EnaDis('inp_country',true);
  60.     }
  61.  
  62. function ptable_ex() {
  63.     var t=document.getElementById("ptable");
  64.     var i=document.getElementById("pimg");
  65.     if (t.className=="vis1") {
  66.         t.className="vis2";
  67.         document.cookie="cnstats_report_log=hidden";
  68.         i.src="img/expand.gif";
  69.         }
  70.     else {
  71.         t.className="vis1";
  72.         document.cookie="cnstats_report_log=visible";
  73.         i.src="img/colapse.gif";
  74.         }
  75.     }
  76.  
  77. //-->
  78. </SCRIPT>
  79. <?php
  80. print $TABLE;
  81. $expanded=$HTTP_COOKIE_VARS["cnstats_report_log"]=="visible"?true:false;
  82. ?>
  83. <tr class="tbl0"><td><a href="JavaScript:ptable_ex();"><img id='pimg' src='img/<?=!$expanded?"expand":"colapse";?>.gif' width=17 height=17 border=0></a></td><td width='95%'><?=$LANG["log_additional"];?>
  84. </td></tr></table>
  85.  
  86. <table width='<?=$TW;?>' id='ptable' cellspacing='1' border='0' cellpadding='3' bgcolor='#D4F3D7' style='table-layout:fixed;' class="<?=($expanded?"vis1":"vis2");?>">
  87. <form action="index.php" method="get">
  88. <tr class="tbl1"><td width="30%"><?=$LANG["log_page"];?></td><td width="20%"><?=CustomSelect("page");?></td><td width="50%"><?=CustomInput("page");?></td></tr>
  89. <tr class="tbl2"><td nowrap><?=$LANG["log_referer"];?></td><td><?=CustomSelect("referer");?></td><td><?=CustomInput("referer");?></td></tr>
  90. <tr class="tbl1"><td><?=$LANG["log_language"];?></td><td><?=CustomSelect("language");?></td><td><?=CustomInput("language");?></td></tr>
  91. <tr class="tbl2"><td><?=$LANG["log_useragent"];?></td><td><?=CustomSelect("agent");?></td><td><?=CustomInput("agent");?></td></tr>
  92. <tr class="tbl1"><td><?=$LANG["log_ip"];?></td><td>
  93.  
  94. <SELECT name="sel_ip" style="width:100%" OnClick="EnaDis('inp_ip',this.value!=2?true:false);">
  95. <OPTION <?=$HTTP_GET_VARS["sel_ip"]=="0"?"SELECTED":"";?> value="0"><?=$LANG["log_any"];?>
  96. <OPTION <?=$HTTP_GET_VARS["sel_ip"]=="1"?"SELECTED":"";?> value="1"><?=$LANG["log_hidden"];?>
  97. <OPTION <?=$HTTP_GET_VARS["sel_ip"]=="2"?"SELECTED":"";?> value="2"><?=$LANG["log_calculate"];?>
  98. </SELECT>
  99.                             
  100. </td><td><?=CustomInput("ip",$HTTP_GET_VARS["sel_ip"]==2?"":"disabled");?></td></tr>
  101. <tr class="tbl2"><td><?=$LANG["log_proxy"];?></td><td>
  102.  
  103. <SELECT name="sel_proxy" style="width:100%" OnClick="EnaDis('inp_proxy',this.value!=3?true:false);">
  104. <OPTION <?=$HTTP_GET_VARS["sel_proxy"]=="0"?"SELECTED":"";?> title="<?=$LANG["log_proxy1"];?>" value="0"><?=$LANG["log_any"];?>
  105. <OPTION <?=$HTTP_GET_VARS["sel_proxy"]=="1"?"SELECTED":"";?> title="<?=$LANG["log_proxy2"];?>" value="1"><?=$LANG["log_without_proxy"];?>
  106. <OPTION <?=$HTTP_GET_VARS["sel_proxy"]=="2"?"SELECTED":"";?> title="<?=$LANG["log_proxy3"];?>" value="2"><?=$LANG["log_any_proxy"];?>
  107. <OPTION <?=$HTTP_GET_VARS["sel_proxy"]=="3"?"SELECTED":"";?> title="<?=$LANG["log_proxy4"];?>" value="3"><?=$LANG["log_with_proxy"];?>
  108. </SELECT>
  109.  
  110. </td><td><?=CustomInput("proxy",$HTTP_GET_VARS["sel_proxy"]==3?"":"disabled");?></td></tr>
  111.  
  112.  
  113. <tr class="tbl1"><td><?=$LANG["log_country"];?></td><td>
  114.  
  115. <SELECT OnClick="EnaDis('inp_country',this.value==0?true:false);" name="sel_country" style="width:100%" id="sel_country" <?=$HTTP_GET_VARS["hosts"]=="yes"?"":"disabled";?>>
  116. <OPTION value="0" <?=$HTTP_GET_VARS["sel_country"]=="0"?"SELECTED":"";?>><?=$LANG["log_any"];?>
  117. <OPTION value="1" <?=$HTTP_GET_VARS["sel_country"]=="1"?"SELECTED":"";?>><?=$LANG["log_calculate"];?>
  118. </SELECT>
  119.  
  120. </td><td>
  121.  
  122. <SELECT name="inp_country" id="inp_country" style="width:100%" <?=($HTTP_GET_VARS["hosts"]=="yes"&&$HTTP_GET_VARS["sel_country"]!=0)?"":"disabled";?>>
  123. <?php
  124. while (list ($key, $val) = each ($COUNTRY)) {
  125.     $code=ord($key[0])*256+ord($key[1]);
  126.     print "<OPTION value=\"".$code."\" ".($HTTP_GET_VARS["inp_country"]==$code?"selected":"").">".$key." / ".$val."\n";
  127.     }
  128. ?>
  129. </SELECT>
  130. <tr class="tbl2"><td colspan="3">
  131. <table><tr><td><input <?=($HTTP_GET_VARS["hosts"]=="yes"?"checked":"");?> onClick="eCountry(this.checked)" type="checkbox" name="hosts" value="yes"></td><td><?=$LANG["log_hosts"];?></td></tr></table>
  132. </td></tr>
  133. <tr class="tbl1"><td colspan="3" align="center">
  134. <input type="hidden" name="st" value="log">
  135. <input type="hidden" name="by" value="<?=$by;?>">
  136. <input type="hidden" name="ftm" value="<?=intval($ftm);?>">
  137. <input type="hidden" name="stm" value="<?=intval($stm);?>">
  138. <input type="hidden" name="filter" value="<?=$filter;?>">
  139. <input type="submit" value="<?=$LANG["log_show"];?>">
  140. </td></tr>
  141. </form>
  142. </table>
  143. <?php
  144. $inpage=40;
  145.  
  146. if ($by==1) {
  147.     $ADMENU.="<a href=\"index.php?st=log&stm=".$stm."&ftm=".$ftm."&by=0&".RemoveVar("by",$qs)."\">".$LANG["fullreport"]."</a><br>";
  148.     $ADMENU.=$LANG["simplereport"];
  149.     $addfields="";
  150.     }
  151. else {
  152.     $ADMENU.=$LANG["fullreport"]."<br>";
  153.     $ADMENU.="<a href=\"index.php?st=log&stm=".$stm."&ftm=".$ftm."&by=1&".RemoveVar("by",$qs)."\">".$LANG["simplereport"]."</a>";
  154.     $addfields=",proxy,agent,language,country";
  155.     }
  156.  
  157. $where="WHERE 1=1";
  158. if ($HTTP_GET_VARS["hosts"]=="yes") $where.=" AND type=1";
  159.  
  160. if ($HTTP_GET_VARS["sel_country"]==1) $where.=" AND country='".intval($HTTP_GET_VARS["inp_country"])."'";
  161.  
  162. if ($HTTP_GET_VARS["sel_proxy"]==1) $where.=" AND proxy=-1";
  163. if ($HTTP_GET_VARS["sel_proxy"]==2) $where.=" AND proxy!=-1";
  164. if ($HTTP_GET_VARS["sel_proxy"]==3) $where.=" AND proxy='".ip2long($HTTP_GET_VARS["inp_proxy"])."'";
  165.  
  166. if ($HTTP_GET_VARS["sel_ip"]==1) $where.=" AND ip=-1";
  167. if ($HTTP_GET_VARS["sel_ip"]==2) $where.=" AND ip='".ip2long($HTTP_GET_VARS["inp_ip"])."'";
  168.  
  169. if ($HTTP_GET_VARS["sel_agent"]==1) $where.=" AND agent like '%".cnstats_mhtml($HTTP_GET_VARS["inp_agent"])."%'";
  170. if ($HTTP_GET_VARS["sel_agent"]==2) $where.=" AND agent not like '%".cnstats_mhtml($HTTP_GET_VARS["inp_agent"])."%'";
  171.     
  172. if ($HTTP_GET_VARS["sel_referer"]==1) $where.=" AND referer like '%".cnstats_mhtml($HTTP_GET_VARS["inp_referer"])."%'";
  173. if ($HTTP_GET_VARS["sel_referer"]==2) $where.=" AND referer not like '%".cnstats_mhtml($HTTP_GET_VARS["inp_referer"])."%'";
  174.  
  175. if ($HTTP_GET_VARS["sel_page"]==1) $where.=" AND page like '%".str_replace("%","\%",urlencode(cnstats_mhtml($HTTP_GET_VARS["inp_page"])))."%'";
  176. if ($HTTP_GET_VARS["sel_page"]==2) $where.=" AND page not like '%".str_replace("%","\%",urlencode(cnstats_mhtml($HTTP_GET_VARS["inp_page"])))."%'";
  177.  
  178. $sqlflt=GenerateFilter($filter);
  179. $sql="select date,ip,page,referer,id,type".$addfields." from cns_log ".$where." AND date>'".$startdate."' AND date<'".$enddate."' ".$sqlflt." order by 1 desc LIMIT 2000";
  180. $r=cnstats_sql_query($sql);
  181.  
  182. $count=mysql_num_rows($r);
  183. if ($start+$inpage>$count) $finish=$count; else $finish=$start+$inpage;
  184. $num=$start;
  185.  
  186. LeftRight($start,$inpage,$num,$count,10,5,"&".RemoveVar("by",$qs));
  187.  
  188.  
  189. if ($by==1) {
  190.     print $TABLE;
  191.     print "<tr class='tbl1'><td width=110 valign='top' align='center'><B>".$LANG["date"]."<br>".$LANG["ip"]."</B></td>";
  192.     print "<td align='center'><B>URL<br>".$LANG["refering page"]."</td>";
  193.     print "</tr>\n";
  194.  
  195.     for ($i=$start;$i<$finish;$i++) {
  196.         $date=date($CONFIG["datetime_format"],strtotime(mysql_result($r,$i,0)));
  197.         $ip=long2ip(mysql_result($r,$i,1));
  198.         $page=urldecode(mysql_result($r,$i,2));
  199.         $from=urldecode(mysql_result($r,$i,3));
  200.         $rid=mysql_result($r,$i,4);
  201.         $type=mysql_result($r,$i,5);
  202.         $num++;
  203.         if (strlen($page)>55) $printpage=substr($page,0,55)."..."; else $printpage=$page;
  204.         if (strlen($from)>55) $printfrom=substr($from,0,55)."..."; else $printfrom=$from;
  205.  
  206.         if ($type==1) print "<tr class=\"tbl1\">"; else print "<tr class=\"tbl2\">";
  207.         print "<td valign=top>".$date."<br>\n";
  208.         print "<a href=\"index.php?rid=".$rid."&st=ipinfo\">".$ip."</a></td>\n";
  209.         print "<td valign=\"top\"><a href=\"".$page."\">".$printpage."</a>\n<br>";
  210.         print                    "<a href=\"".$from."\">".$printfrom."</a>\n</td>\n";
  211.         }
  212.     print "</table>\n";
  213.     }
  214. else {
  215.     for ($i=$start;$i<$finish;$i++) {
  216.         $date=date($CONFIG["datetime_format"],strtotime(mysql_result($r,$i,0)));
  217.         $ip=long2ip(mysql_result($r,$i,1));
  218.         $page=mysql_result($r,$i,2);
  219.         $from=mysql_result($r,$i,3);
  220.         $rid=mysql_result($r,$i,4);
  221.         if ($class!="tbl1") $class="tbl1"; else $class="tbl2";
  222.         $num++;
  223.         $page=urldecode($page);
  224.         $from=urldecode($from);
  225.  
  226.         $proxy=mysql_result($r,$i,6)==-1?$LANG["noproxy"]:long2ip(mysql_result($r,$i,6));
  227.  
  228.         if (strlen($page)>70) $printdata1=substr($page,0,70)."..."; else $printdata1=$page;
  229.         if (strlen($from)>70) $printdata2=substr($from,0,70)."..."; else $printdata2=$from;
  230.  
  231.         if ($ip=="255.255.255.255") $ip=$LANG["unknownip"];
  232.         else $ip="<a href=\"index.php?rid=".$rid."&st=ipinfo&stm=".$stm."&ftm=".$ftm."\">".$ip."</a>";
  233.  
  234.         $pfiltua=str_replace("%FLT",urlencode(mysql_result($r,$i,7)),$filtua);
  235.         $pfiltip=str_replace("%FLT",mysql_result($r,$i,1),$filtip);
  236.  
  237.         
  238.         $language=GetLanguage(substr(mysql_result($r,$i,8),0,2));
  239.         if (empty($language)) $language=mysql_result($r,$i,8);
  240.         else $language.=" (".mysql_result($r,$i,8).")";
  241.  
  242.         print $TABLE;
  243.         print "<tr class=\"tbl2\"><td width=\"100\">".$LANG["date"]."</td><td>".$date."</td></tr>\n";
  244.         print "<tr class=\"tbl1\"><td>".$LANG["url"]."</td><td><a href=\"".$page."\" target=\"_blank\">".$printdata1."</a></td></tr>\n";
  245.         print "<tr class=\"tbl1\"><td>".$LANG["referer"]."</td><td><a href=\"".$from."\" target=\"_blank\">".$printdata2."</a></td></tr>\n";
  246.         print "<tr class=\"tbl2\"><td>".$LANG["ip"]."</td><td>".$pfiltip.$ip."</td></tr>\n";
  247.         print "<tr class=\"tbl2\"><td>".$LANG["proxy"]."</td><td>".$proxy."</td></tr>\n";
  248.         print "<tr class=\"tbl2\"><td>User-Agent</td><td>".$pfiltua.mysql_result($r,$i,7)."</td></tr>\n";
  249.         print "<tr class=\"tbl2\"><td>".$LANG["language"]."</td><td>".$language."</td></tr>\n";
  250.  
  251.         
  252.         $country=mysql_result($r,$i,9);
  253.         if ($country!=0) {
  254.             $tld="";
  255.             if ($country=="0") $country=$LANG["other countries"];
  256.             else {
  257.                 $tld=chr($country>>8).chr($country&0xFF);
  258.                 if (isset($COUNTRY[$tld])) $country=$COUNTRY[$tld];
  259.                 else $country=$tld;
  260.     
  261.                 $country="<img src=img/countries/".strtolower($tld).".gif width=18 height=12 border=0 align=absmiddle>  ".$country;
  262.                 }
  263.             print "<tr class=\"tbl2\"><td>".$LANG["country"]."</td><td>".$country."</td></tr>\n";
  264.             }
  265.  
  266.         print "</tr>\n";
  267.         print "</table>\n<br>\n";
  268.         }
  269.     }
  270. ?>
  271.