Informazioni sulla privacy

Strumenti Utente

Strumenti Sito


pages:mod:logforum

La documentazione degli accessi al forum

Fino alla metà del marzo 2020 il server dava la possibilità di esaminare le caratteristiche degli accessi tramite la lettura dei log del server web Apache. Il nuovo server offre questa possibilità, ma a prezzi piuttosto salati. Si è quindi sviluppato un metodo interno che memorizzi le attività. Si è cercata la soluzione che comportasse meno modifiche possibili agli script del forum. Si è ritenuto che il modo migliore di procedere fosse quello di modificare lo script che genera il banner iniziale e che viene chiamato ad ogni apertura di pagina del forum, tranne quelli di amministrazione. Le modifiche fatte sono riportate nello script di creazione del banner: le righe interessate sono racchiuse tra due commenti

// Creazione storico

$out= date("d/m/Y\tH:i:s\t");
$fo="../../../../../cntp/cnt".date("Ymd").".txt";
$ip = getenv('HTTP_CLIENT_IP')?:
getenv('HTTP_X_FORWARDED_FOR')?:
getenv('HTTP_X_FORWARDED')?:
getenv('HTTP_FORWARDED_FOR')?:
getenv('HTTP_FORWARDED')?:
getenv('REMOTE_ADDR');
$out.=$ip."\t";
$out.=($_SERVER['HTTP_REFERER']!="")?$_SERVER['HTTP_REFERER']:"-";
$out.="\t".$_SERVER['HTTP_USER_AGENT']."\t".gethostbyaddr($ip)."\n";
$f=fopen($fo,"a");
fputs($f,$out);
fclose($f);

// fine creazione storico

Per ogni giorno viene creato un file /cntp/cntwAAAAMMGG.txt che contiene i dati recuperati dagli accessi. Questa soluzione, purtroppo, non consente di memorizzare correttamente anche il referer in quanto il referer è la pagina che è stata aperta.

Lo script che consente di leggere il file scritto si trova in cntp/storico.php

<?php 
?>
<HTML>
<HEAD>
  <title>Contatore storico</title>
</HEAD>
<BODY>


<?php

$urlk=array("telecom","wind","fastweb","vodafone","tiscali","google","interbusiness");
$urlkn=array(0,         1,     2,        3,         4,         5,       0);
$urlcnt=array(0,        0,     0,        0,         0,         0,       0);

$mx=100;
$err="";
if(!isset($_GET['fileda'])){
  $fileda=$filea=date("Ymd");
//  $fileda=date("Ymd",time()-604800);  //sette giorni precedenti
  $fileda1=$filea1=date("d/m/Y");
//  $fileda1=date("d/m/Y",time()-604800);  //sette giorni precedenti
}else{
  $fileda1=$_GET['fileda'];
  $filea1=$_GET['filea'];
  $dd=explode("/",$fileda1,3);
  if($dd[2]<100)$dd[2]=2000+$dd[2];
  for ($i=0;$i<2;$i++){
    if(strlen($dd[$i])<2)$dd[$i]="0".$dd[1];
  }
  $fileda=(int)($dd[2].$dd[1].$dd[0]);
  $fileda1=$dd[0].'/'.$dd[1].'/'.$dd[2];
  $dd=explode("/",$filea1,3);
  if($dd[2]<100)$dd[2]=2000+$dd[2];
  if($dd[2]<100)$dd[2]=2000+$dd[2];
  for ($i=0;$i<2;$i++){
    if(strlen($dd[$i])<2)$dd[$i]="0".$dd[1];
  }
  $filea=(int)($dd[2].$dd[1].$dd[0]);
  $filea1=$dd[0].'/'.$dd[1].'/'.$dd[2];
  if($filea<$fileda)$err= ", ma la data finale sembra precedere la data iniziale" ;
}
echo"
<TABLE WIDTH='800' ALIGN='center'><TR><TD>
 <H2 align='center'>aTrieste.eu - storico degli accessi al Forum</H2>
 <form action='storico.php' method='get'><center>
 Date da considerare (GG/MM/AAAA):<BR>dal&nbsp;
 <input type='text' name='fileda' value=\"$fileda1\" maxlength=10 minlength=4 size=10> 
 &nbsp;&nbsp;al&nbsp;
 <input type='text' name='filea' value=\"$filea1\" maxlength=10 minlength=4 size=10> 
 <input type='submit' value='vai'><SMALL><BR><B>N.B.:</B> la correttezza formale della data non viene controllata$err.</small></CENTER>
 </form>
";
if($err!="") {echo"</BODY></HTML>"; exit(1);}
 $ipt=array();
 $ipn=array();
 $ipi=array();
 $ipp=array();
 $ippc=array();
 $ippcnt=0;
 $ipc=0;
 $ipvt=0;
 echo "<CENTER>Versione PHP: ".phpversion()." - IP address: ".$_SERVER['REMOTE_ADDR']."</CENTER><P>";
 for ($filei=$fileda;$filei<=$filea;$filei++){
   $file="cnt".$filei.".txt";
  if($filei==$fileda){
  echo "    <H3 align='center'>Indice del contenuto della pagina</H3><UL><LI><A HREF='#storico'>Storico degli accessi al Forum</li><LI><A HREF='#riassunto'>Riassunto statistico</A></LI><LI><A HREF='#ip'>Indirizzi IP con pi&ugrave; accessi</A></LI><LI><A HREF='#provider'>Titolare dell'indirizzo IP</A></LI><LI><A HREF='#pagine'>Pagine pi&ugrave; consultate</A></LI></UL><P><A NAME='storico'></A>
";
  echo "<H3 align='center'>Storico degli accessi</h3><SMALL><B>Legenda</b><br><b>N:</b> Numero di pagine scaricate fino a quel momento.<BR><b>Nv:</b> Numero progressivo assegnato al visitatore (stesso IP) al primo accesso.<BR><b>Npv:</b> Numero di pagine lette dal visitatore fino a quel momento.<BR><b>Refer:</b> Nel caso del forum questa &egrave; la pagina che &egrave; stata aperta; non &egrave; possibile sapere chi ha mandato alla pagina in questione.<BR><b>Agent:</b> Informazioni sul browser e sul sistema operativo usati.<BR><P>(*) Le celle segnate con (*) sono state scritte dalla versione precedente del contatore che non gestiva quel campo.<BR></SMALL>";
  echo '<CENTER><TABLE BORDER=1 ALIGN=CENTER  BORDERCOLOR="#ffffff" WIDTH=750>';
  echo "<TR><TH>Nc</TH><TH>Nv</TH><TH>Npv.</TH><TH>Data</TH><TH>Ora</TH><TH>IP</TH><TH>Refer</TH><TH>Agent</TH><TH>Provider</TR>\n";
  }
  if (file_exists($file)){
		$f=fopen($file,'r');
		$i=0;
		while (!feof($f)){
		  $s=explode("\t",fgets($f,2000),6);
		  if (sizeof($s)<3) continue;
		  if (strpos($s[3],"styles"))continue;
		  if (strlen($s[3])<5)continue;
		  $i++;
		  $ipf=0;
		  for($jip=0;$jip<$ipc;$jip++){
		    if(strcmp($ipt[$jip],$s[2])==0){
		      $ipn[$jip]++;
		      $ipf=1;
		      break;
		    }
		  }
		  if($ipf==0){
		    $ipt[$ipc]=$s[2];
		    $ipn[$ipc]=1;
		    $jip=$ipc;
		    $ipi[$ipc]=$i;
		    if (sizeof($s)<6) $ipad[$ipc]=gethostbyaddr($s[2]);
		    else $ipad[$ipc]=$s[5];
		    $ipc++;
		  }
		  echo "<TR style=\"font-family:'Courier New'; font-size:small;\" >\n";
	//		$s[3]=wordwrap($s[3],25,' ',1);
	//		$s[4]=wordwrap($s[4],25,' ',1);
			$s1=strtok(chr(9));
			echo "<TD align='right'>$i</td>\n";
			echo "<TD align='right'>".($jip+1)."</td>\n";
			echo "<TD align='right'>".$ipn[$jip]."</td>\n";
			$ipvt++;
			for ($j=0;$j<5;$j++){
				echo "<TD>";
				if ($j==2) echo "
		     

				  <A HREF=\"#\" onclick=\"window.open('gwh.php?ip=".$s[$j]."','ipw','height=150, width=400').focus(); return false;\">";
				if ($j==3){ 
// echo "$ippcnt $s[3] <br>";				  
				  echo "<A HREF='".$s[$j]."'>";
				  for ($kk=0;$kk<$ippcnt;$kk++){
				    if($ipp[$kk]==$s[$j]){
				      $ippc[$kk]++;
				      $kk=-1;
				      break;
				    }
				  }
				  if($kk>=0) {
				    $ipp[$ippcnt]=$s[3];
				    $ippc[$ippcnt]=1;
				    $ippcnt++;
				  }
				}
				echo wordwrap($s[$j],25,' ',1);
				if ($j<2) echo "</TD>\n";
				else echo "</A></TD>\n";
			}
			echo "<TD>";
			if (sizeof($s)>5) {
				  echo wordwrap($s[5],25," ",1);
			}else{
				  echo "(*)";
			}
			echo"</TD>";

			echo "</TR>\n";
			if (feof($f)) break;
		}
	}
	}
  echo '</TABLE></CENTER>';

  echo"
    <A name='riassunto'></A>
    <h3 align='center'>Riassunto statistico</H3>
      <TABLE align='Center' border=1><TR><TD align='center'>Dal ".$fileda1." al ".$filea1.":<P>
    <P><TABLE border=0 ALIGN='center' cellpadding=5><TR><TD border=0>Sono state aperte $ipvt pagine</TD></TR>
    <TR><TD>
    In media ogni utente ha visto ".number_format($ipvt/$ipc,1,',','.')." pagine.</TD></TR><TR><TD >I contatti provengono da $ipc indirizzi IP diversi.</TD></TR></TABLE></TABLE><P>
    <SMALL><B>Legenda</b><br><b>N:</b> Numero d'ordine del primo accesso sullo storico da parte di quell'indirizzo IP.<BR><b>Npv:</b> Numero di pagine lette dal visitatore.<BR></SMALL>
    <A name='ip'>
    <H3 align='center'>Indice del contenuto della pagina</H3><UL><LI><A HREF='#storico'>Storico degli accessi al Forum</li><LI><A HREF='#riassunto'>Riassunto statistico</A></LI><LI><A HREF='#ip'>Indirizzi IP con pi&ugrave; accessi</A></LI><LI><A HREF='#provider'>Titolare dell'indirizzo IP</A></LI><LI><A HREF='#pagine'>Pagine pi&ugrave; consultate</A></LI></UL><P><A NAME='storico'></A>

    <h3 align='center'>Indirizzi IP col maggior numero di accessi</H3>
    <CENTER><TABLE BORDER=1 ALIGN=CENTER  BORDERCOLOR='#ffffff'>
    <TR><TH>N</TH><TH>Npv.</TH><TH>IP</TH><TH>DNS</TH></TR>\n
  ";
    array_multisort ($ipn,SORT_DESC,$ipi,$ipt,$ipad);
  $urln=array();
  $urli=sizeof($urlk);

  for ($i=0;$i<min($ipc,$mx);$i++){
//echo "<TR><TD>*****</T></TR><TR><TD>";
    $urlf=0;
    $urlt=$url=$ipad[$i];
//echo "*$urlt";
    if($url!=$ipt[$i]){
		  $urlv=explode(".",$url);
		  $urls=sizeof($urlv);
		  $urlurl=0;
//		  echo "$url*";
		  $urlt=$urlv[$urls-2].".".$urlv[$urls-1];
//		  echo "$urlt<BR>";
		  if($urls==4  
		     && is_numeric(trim($urlv[$urls-4]))
		     && is_numeric(trim($urlv[$urls-3]))
		     ) {
		       $urlt=trim($urlv[$urls-4]).".".$urlv[$urls-3].".".$urlt;
		     } else if (trim(strlen($urlv[$urls-2]))<=3) {
		       $urlt=$urlv[$urls-3].".".$urlt;
		     }
//		  echo $urls."#". var_dump(is_numeric(trim($urlv[$urls-4])))."*".var_dump(is_numeric(trim($urlv[$urls-3])))."*".trim($urlv[$urls-4])."*".trim($urlv[$urls-3])."**$urlt<BR><BR>****<BR><BR>";
//		  echo "*$urls";
//		  if ($urlurl==0) $urlt=$urlv[$urls-4].".".$urlt;
//      echo "$urlurl*$urlt</TD></TR>";
		  unset($urlv);
		};
//    echo "$urlf,$urli,$urlt<br>";
		for ($j=0;$j<$urli;$j++){
//		  echo "$j,$urlk[$j],".strpos($urlt,$urlk[$j])."<br>";
			if(strpos($urlt,$urlk[$j])!==FALSE){
			  $urlcnt[$urlkn[$j]]+=$ipn[$i];
			  $urlf=1;
  			break;
  		}
		}
		if($urlf==0){
			$urlk[$urli]=$urlt;
			$urlkn[$urli]=$urli;
      $urlcnt[$urli]=$ipn[$i];
      $urli++;			
		}
//		for($j=0;$j<$urli;$j++) echo "$urlk[$j],$urlcnt[$j]<BR>";
    echo "
      <TR style=\"font-family:'Courier New'; font-size:small;\" >\n<TD align='right'>".($ipi[$i])."</TD><TD align='right'>".($ipn[$i])."</TD><TD>".$ipt[$i]."</TD><TD>$url</TD>\n</tr>
    ";
  }      
   
 
echo "</TABLE> </CENTER>
    <A name='provider'>
   <H3 align='center'>Indice del contenuto della pagina</H3><UL><LI><A HREF='#storico'>Storico degli accessi al Forum</li><LI><A HREF='#riassunto'>Riassunto statistico</A></LI><LI><A HREF='#ip'>Indirizzi IP con pi&ugrave; accessi</A></LI><LI><A HREF='#provider'>Titolare dell'indirizzo IP</A></LI><LI><A HREF='#pagine'>Pagine pi&ugrave; consultate</A></LI></UL><P><A NAME='storico'></A>


<H3 align='center'>Numero di accessi in base al titolare dell'ip</H3> 
<TABLE border=1 cellpadding=5 width=400 align='center'><TH>Titolare IP</TH><TH>Quanti</TH></TR>";
array_multisort($urlcnt,SORT_DESC,$urlk);
for($j=0;$j<$urli;$j++){
  if ($urlcnt[$urlkn[$j]]==0)break;
  echo "<TR style=\"font-family:'Courier New'; font-size:small;\" >\n<TD>".$urlk[$j]."</TD><TD align=right>".$urlcnt[$j]."</TD></Tr>";
}
echo"</TABLE>
</CENTER>
    <A name='pagine'>
  <H3 align='center'>Indice del contenuto della pagina</H3><UL><LI><A HREF='#storico'>Storico degli accessi al Forum</li><LI><A HREF='#riassunto'>Riassunto statistico</A></LI><LI><A HREF='#ip'>Indirizzi IP con pi&ugrave; accessi</A></LI><LI><A HREF='#pagine'>Pagine pi&ugrave; consultate</A></LI></UL><P><A NAME='storico'></A>
    <TABLE align='Center' border=1 cellpadding=10><TR><TD align='center'>
    <h3 align='center'>Totale delle pagine viste</H3>
      Dal ".($fileda % 100)."/".(floor($fileda/100)%100)."/".(floor($fileda/10000))." al ".($filea % 100)."/".(floor($filea/100)%100)."/".(floor($filea/10000))."...<P>
    <P>Sono state viste $ippcnt pagine diverse</TD></TR></TABLE>
    <h3 align='center'>Elenco delle $mx pagine pi&ugrave; viste</H3>
    <SMALL><B>Legenda</b><br><b>N:</b> Numero di accessi.<BR><b>Pagina:</b> pagina aperta.<BR></SMALL>
    
    <CENTER><TABLE BORDER=1 ALIGN=CENTER  BORDERCOLOR='#ffffff' width=600>
    <TR><TH>N</TH><TH>Pagina.</TH></TR>\n
  ";
    array_multisort ($ippc,SORT_DESC,$ipp);

  for ($i=0;$i<min($ippcnt,$mx);$i++){
    echo "
      <TR style=\"font-family:'Courier New'; font-size:small;\" >\n<TD align='right'>".($ippc[$i])."</TD><TD align='left'><A HREF='".($ipp[$i])."'>".(wordwrap($ipp[$i],80,' ',1))."</A></TD></tr>
    ";
  }      

echo"
</TD></TR></TABLE></CENTER>
    <H3 align='center'>Indice del contenuto della pagina</H3><UL><LI><A HREF='#storico'>Storico degli accessi al Forum</li><LI><A HREF='#riassunto'>Riassunto statistico</A></LI><LI><A HREF='#ip'>Indirizzi IP con pi&ugrave; accessi</A></LI><LI><A HREF='#provider'>Titolare dell'indirizzo IP</A></LI><LI><A HREF='#pagine'>Pagine pi&ugrave; consultate</A></LI></UL><P><A NAME='storico'></A>

";
?>
</BODY>
</HTML>

Pagina indice per i moderatori

Questo sito Web utilizza i cookie. Utilizzando il sito Web, l'utente accetta la memorizzazione dei cookie sul proprio computer. Inoltre riconosci di aver letto e compreso la nostra Informativa sulla privacy. Se non sei d'accordo, lascia il sito.Maggiori informazioni sui cookie
pages/mod/logforum.txt · Ultima modifica: 09-03-2024 08:24 da 127.0.0.1

Ad eccezione da dove è diversamente indicato, il contenuto di questo wiki è soggetto alla seguente licenza: CC Attribution-Noncommercial-Share Alike 4.0 International
CC Attribution-Noncommercial-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki