1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| for($m = 1 ; $m <= $moisCourant ; $m++)
{
$moisConcerne = date("m",mktime(0,0,0,$m,1,$anneeCourante)) ;
$jourFinMoisConcerne = date("d",mktime(0,0,0,$m+1,0,$anneeCourante)) ;
$periodeDebutMois = "$anneeCourante-$moisConcerne-01" ;
$periodeFinMois = "$anneeCourante-$moisConcerne-$jourFinMoisConcerne" ;
$total=0;
$TableauEsites = array() ;
$hitsIP = array() ;
//Cette requête renvoie le compte des hits de chaque IP sur la base de données.
$queryIP=("select UserIP as ip,sum(count) as hits from LogsTableIP where Date >= '$periodeDebutMois' and Date <= '$periodeFinMois' group by ip") ;
$resIP=mysql_query($queryIP) or die('Erreur SQL !<br>'.$queryIP.'<br>'.mysql_error());
for($i=0; $hitsIP=mysql_fetch_array($resIP); $i++)
{
$IP[$i]=$hitsIP["ip"];
$ipHitsHits[$i]=$hitsIP["hits"];
$ipHits[$i] = ip2long($IP[$i]) ;
}
//Cette requête renvoie le comptage total des hits des IP dans la base de données.
$totalIP=("select sum(count) as total from LogsTableIP where Date >= '$periodeDebutMois' and Date <= '$periodeFinMois'") ;
$restotal=mysql_query($totalIP) or die('Erreur SQL !<br>'.$totalIP.'<br>'.mysql_error());
$totalHits=mysql_fetch_row($restotal);
$totalRepartition = array(0,0,0,0,0,0,0) ;
$msgFin = "" ;
//Distribution de pays : chaque IP est examinée et si une des IP appartient à un masque d'IP, le pays auquel appartient l’IP est incrémenté.
//Si l'IP n'est pas identifiée, une valeur booléenne ($reussite) est réglée et des disques d'essai de l'IP et le nombre de fois où cet IP non inscrit apparaît.
$unknown=0;
for($i=0 ; $i<count($IP) ; $i++)
{
$reussite=0;
for($j = 0 ; $j < count($countries) ; $j++)
{
if($ipHits[$i] >= $ipMaskStart[$j] && $ipHits[$i] <= $ipMaskEnd[$j])
{
$totalRepartition[$j] = $totalRepartition[$j]+$ipHitsHits[$i] ;
$reussite = 1 ;
break ;
}
}
if($reussite == 0)
{
$unknown=$unknown+$ipHitsHits[$i]; //Comptage des hits des ips n'appartenant pas à un des pays du graph
}
}
//S'il y a un ou plusieurs IPS non inscrits, le script doit recalculer le comptage total de l'IPS enregistré.
if($msgFin != "")
{
$IPDetectees = 0 ;
for($i = 0 ; $i < count($countries) ; $i++)
{
$IPDetectees = $IPDetectees + $totalRepartition[$i] ;
}
}
$values=array(0,0,0,0,0,0,0,0);
for($i=0; $i<count($countries); $i++)
{
$values[$i]=round(100*($totalRepartition[$i]/$totalHits["total"]),2);
}
$values[7]=round(100*($unknown/$totalHits["total"]),2);
?> |
Partager