PageRenderTime 547ms CodeModel.GetById 60ms app.highlight 378ms RepoModel.GetById 26ms app.codeStats 2ms

/modules/visitstat/normal.php

https://bitbucket.org/meianki/voguersurlavague
PHP | 734 lines | 582 code | 62 blank | 90 comment | 123 complexity | 590d9bf7c803501bc8edab188013541b MD5 | raw file
  1<?
  2/*
  3 -------------------------------------------------------------------------
  4 AllMyStats V1.39 - Statistiques de fr�quentation visiteurs et robots
  5 -------------------------------------------------------------------------
  6 Copyright (C) 2000 - C�dric TATANGELO (Cedstat)
  7 Copyright (C) 2008 - Herve Seywert
  8 -------------------------------------------------------------------------
  9 Web:   http://www.wertronic.com
 10 -------------------------------------------------------------------------
 11 Ce programme est libre, vous pouvez le redistribuer et/ou le modifier
 12 selon les termes de la Licence Publique G�nrale GNU publi�e par la Free
 13 Software Foundation .
 14 -------------------------------------------------------------------------
 15VOIR: http://analytics.blogspot.com/2009/04/upcoming-change-to-googlecom-search.html (url google "source=web")
 16Entre autre aussi: Nouvelle variable "as_q" 		unset($Matrice_bad_user_agent);
 17*/
 18
 19		//-----------------------------------------------------------------------------
 20		//Mise en en forme ($AllBots) pour preg_match des bots connus (dans la table + bot en g�n�rale (bot, spider , etc)
 21		$result1=mysql_query("select bot_name, org_name, crawler_url, crawler_info from ".TABLE_CRAWLER.""); 
 22		if (!$result1) { //ex: si la table n'existe pas
 23			echo 'Impossible d\'ex�cuter la requ?te : ' . mysql_error();
 24			exit;
 25		}
 26
 27		$AllBots = '/Bot|Slurp|Scooter|Spider|crawl|';
 28		while($row=mysql_fetch_array($result1)){
 29			$Form_chaine = str_replace('/','\/',$row['bot_name']);
 30			$Form_chaine = str_replace('+','\+',$Form_chaine);
 31			$Form_chaine = str_replace('(','\(',$Form_chaine);
 32			$Form_chaine = str_replace(')','\)',$Form_chaine);
 33			$AllBots .= $Form_chaine.'|';
 34		}
 35		$AllBots = substr($AllBots,0,strlen($AllBots)-1); //del last |
 36		$AllBots .= '/i';
 37		//------------------------ Mise en tableau de la table bad user agent ---------
 38		unset($Matrice_bad_user_agent);
 39		$Bad_User_Agent=mysql_query("select * from ".TABLE_BAD_USER_AGENT.""); //
 40		while($bad_agents=mysql_fetch_array($Bad_User_Agent)){ // Mise en tableau des bad agents
 41			$Matrice_bad_user_agent[] = array($bad_agents['user_agent'], $bad_agents['info'],$bad_agents['type']);
 42		}
 43		//-----------------------------------------------------------------------------
 44
 45		if($when==""){ // seulement lorsque 1er appel page
 46			$when = date('d/m/Y',strtotime($UTC." hours", strtotime(date("Y-m-d H:i:s"))));
 47		}
 48		
 49?>
 50<style type="text/css">
 51<!--
 52.Style2 {
 53	font-size: 12px;
 54	font-family: Geneva, Arial, Helvetica, sans-serif;
 55	font-weight: lighter;
 56}
 57.Style11pxbold {
 58	font-size: 11px;
 59	font-weight: bold;
 60	font-family: Verdana, Arial, Helvetica, sans-serif;
 61}
 62-->
 63</style>
 64
 65<TABLE CELLPADDING=1 CELLSPACING=0 class=TABLEBORDER>
 66  <TBODY>
 67  <TR>
 68    <TD><!-- Data BEGIN -->
 69      <TABLE CELLPADDING=5 CELLSPACING=0 class=TABLEFRAME><!-- header -->
 70        <TBODY>
 71        <TR>
 72          <TH align="center" valign="middle" class=TABLETITLE>
 73			<form name="form1" method="post" action="<? $PHP_SELF; ?>">
 74				<input type="hidden" name="when"  value="<? echo $when; ?>">
 75			    <input class="submit" name="refresh" type="submit" value="<? echo $MSG_REFRESH; ?>" alt="<? echo $MSG_REFRESH; ?>" title="<? echo $MSG_REFRESH; ?>">
 76			</form>
 77			&nbsp;&nbsp;<? echo $MSG_STATISTIQUE_DATE.$when; ?>
 78		 </TH>
 79        </TR>
 80</TBODY></TABLE>
 81      <!-- Rows END --></TD></TR><!-- no footer --></TBODY></TABLE><!-- Data END --></TD></TR></TBODY></TABLE><BR>
 82
 83<TABLE CELLPADDING=1 CELLSPACING=0 class=TABLEBORDER>
 84  <TBODY>
 85  <TR>
 86    <TD><!-- Data BEGIN -->
 87      <TABLE CELLPADDING=5 CELLSPACING=0 class=TABLEFRAME><!-- header -->
 88        <TBODY>
 89        <TR>
 90          <TH class=TABLETITLE><? echo $MSG_RESUME; ?></TH>
 91        </TR>
 92        <TR>
 93          <TD colSpan=2><!-- Rows BEGIN -->
 94            <TABLE border=1 CELLPADDING=2 CELLSPACING=0 class=TABLEDATA>
 95		  <tr>
 96			<TH> 
 97				<? echo $MSG_DESCRIPTION; ?>
 98			</TH>
 99			<TH>
100				<? echo $MSG_VALUE; ?>
101			</TH>
102			<TH>
103				<? echo $MSG_TOTAL; ?>
104			</TH>
105
106		</tr>
107
108<?php
109		//#############################################################################################
110		//Nb visiteurs et pages hors bot,crawler,robots et hors bad user agent
111		//Robots Nbvisites, Nb pages vues ...
112		//---------------------------------------------------------------------------------------------
113		$result=mysql_query("select * from ".TABLE_VISITEUR." where date like '$when'");
114		$NbpageVues_HorsBots=0;
115		$NbVisites_HorsBots=0;
116		//---------------------------------------------------------------------------------------------
117		while($row = mysql_fetch_array($result)){
118			$User_Agent = $row['agent'];
119
120			//-- Exclusion des Bad user agent reconnus (non compt� comme visiteur) ----
121			$trash=false;
122			//NE PAS tester strlen(trim($User_Agent))<=1 car le user agent peut ?tre vide mais IP et host non vide
123			//Compter les user agent inconnus mais mais pas les spammers
124			for($nb_bad_user_agent=0;$nb_bad_user_agent<count($Matrice_bad_user_agent);$nb_bad_user_agent++){
125				if ($Matrice_bad_user_agent[$nb_bad_user_agent][0] == $User_Agent && $Matrice_bad_user_agent[$nb_bad_user_agent][2]=='S') {
126					$trash=true;
127				}
128			}
129			//Visistes et pages vues hors robots et hors bad ou user agent inconnus
130			if(!preg_match($AllBots, $row[agent]) && $trash==false) {		
131//Pour test
132//echo "Test normal.php = ".$row['referer']. " - ".$row['host']. "<br>";
133				$NbpageVues_HorsBots = $NbpageVues_HorsBots + $row['nb_visite'];
134				$NbVisites_HorsBots = $NbVisites_HorsBots + 1;
135			} else {
136				//echo "N'est pas compt� comme visiteur: ".$User_Agent.'<br>';			
137				$NbpageVues_Bots = $NbpageVues_Bots+$row['nb_visite'];
138				$NbVisites_Bots = $NbVisites_Bots + 1;
139			}			
140		}
141		$visite_par_visiteurs_HorsBots = @bcdiv($NbpageVues_HorsBots,$NbVisites_HorsBots,2); 
142		$visite_par_visiteurs_Bots = @bcdiv($NbpageVues_Bots,$NbVisites_Bots,2); 
143
144
145		//#############################################################################################
146							// Nombre visiteur total (avec robots)
147		//---------------------------------------------------------------------------------------------
148		$nb_visiteur=0;
149		//---------------------------
150		//Nb de visites (avec robots)
151		$result=mysql_query("select count(*) as somme from ".TABLE_VISITEUR." where date like '$when'");
152		$row_nb_visites=mysql_fetch_row($result);
153		//--------------------------
154	
155		//Heure premier, heure dernier et Nb de page vue ($nb_visite ? supprimer)
156		$result=mysql_query("select * from ".TABLE_VISITEUR." v, ".TABLE_PAGE." p where date like '$when' and v.code=p.code order by heure");
157		$nb_visite=0;
158		$heure_premier="";
159		while($row=mysql_fetch_array($result)){
160			if($heure_premier==""){
161				$heure_premier=$row[heure];
162			}
163			$nb_visite=$nb_visite+$row[nb_visite];
164			$heure_dernier=$row[heure];
165		}
166
167		//Nb visites veille (avec robots)
168		$diffhier = $UTC-24;
169		$date_utc_hier = date('d/m/Y',strtotime($diffhier." hours", strtotime(date("Y-m-d H:i:s"))));
170		$heure_utc = date('H:i',strtotime($UTC." hours", strtotime(date("Y-m-d H:i:s"))));
171		$result=mysql_query("select * from ".TABLE_VISITEUR." v, ".TABLE_PAGE." p where p.code=v.code and heure<'".$heure_utc."' and heure>'00:00' and date = '".$date_utc_hier."' group by ip");
172
173		$nb_visite_hier=mysql_num_rows($result);
174
175		echo "<tr><td> 
176					<div>".$MSG_STAT_PREMIER." :</div>
177				  </td>
178				  <td>"; echo $heure_premier; echo "&nbsp;</td>
179				  <td align=center>-</td>
180				</tr>
181				<tr> 
182				  <td> 
183					<div>".$MSG_STAT_DERNIER." :</div>
184				  </td>
185				  <td>"; echo $heure_dernier; echo "&nbsp;</td>
186				  <td align=center>-</td>
187				</tr>
188				<tr> 
189				  <td> 
190					<div>".$MSG_STAT_VISTEURS." (".$MSG_ROBOTS_EXCLUS.") :</div>
191					<div>".$MSG_ROBOTS_STAT_VISTEURS." :</div>
192				  </td>
193				  <td valign=top><span class=\"Style11pxbold\">".$NbVisites_HorsBots."</span><br>".$NbVisites_Bots."</td>
194				  <td align=center>".$row_nb_visites[0]. " | ".$MSG_HIER." : ".$nb_visite_hier.
195				  "</td>
196				</tr>
197				<tr> 
198				  <td> 
199					<div>".$MSG_STAT_PAGESVUES." (".$MSG_ROBOTS_EXCLUS.") :</div>
200					<div>".$MSG_ROBOTS_STAT_PAGESVUES."  :</div>
201				  </td>
202				  <td valign=top>";$max_visite_HorsBots = $NbpageVues_HorsBots;
203				   echo '<span class="Style11pxbold">'.$NbpageVues_HorsBots."</span><br>".$NbpageVues_Bots.
204				   "</td>
205				  <td align=center>"; $max_visite = $nb_visite; echo $nb_visite; 
206				  echo "
207				  </td>
208				</tr>
209				<tr> 
210				  <td> 
211					<div>".$MSG_STAT_POURCENTAGE." (".$MSG_ROBOTS_EXCLUS.") :</div>
212					<div>".$MSG_ROBOTS_STAT_POURCENTAGE." :</div>
213				  </td>
214				  <td valign=top>"; 
215				  if($row_nb_visites[0]!=0){
216				  	echo '<span class="Style11pxbold">'.$visite_par_visiteurs_HorsBots.'</span><br>';
217					echo $visite_par_visiteurs_Bots; 
218				  }
219				  echo "&nbsp;</td>
220				  <td align=center>&nbsp;"; 
221				  if($row_nb_visites[0]!=0){
222					$visite_par_visiteurs=bcdiv($nb_visite,$row_nb_visites[0],2); echo $visite_par_visiteurs; 
223				  }
224				  echo "&nbsp;</td>";
225
226		?>
227</TABLE></TD></TR></TABLE>
228      <!-- Data END --></TD></TR></TBODY></TABLE><br>
229		
230		<?
231		//---------------------------- Fin tableau de bord --------------------------------------------
232		//#############################################################################################
233								// Visites par plage horaire
234		//---------------------------------------------------------------------------------------------
235
236		for($i=1;$i<=24;$i++){
237			$hour="heure$i";
238			$var="v_heure$i";
239			$$var=0;
240			$$hour=0;
241		}
242
243		//recup des donn�es
244		$result=mysql_query("select v.code, v.agent, p.nb_visite, p.heure, p.page from ".TABLE_VISITEUR." v,".TABLE_PAGE." p where v.date like '$when' and v.code=p.code order by p.heure ASC");
245
246//## TEST Pour comptabilise les visiteurs simultan�s par heure ##
247$code_unique_hre1 = array();
248$code_unique_hre2 = array();
249$code_unique_hre3 = array();
250$code_unique_hre4 = array();
251$code_unique_hre5 = array();
252$code_unique_hre6 = array();
253$code_unique_hre7 = array();
254$code_unique_hre8 = array();
255$code_unique_hre9 = array();
256$code_unique_hre10 = array();
257$code_unique_hre11 = array();
258$code_unique_hre12 = array();
259$code_unique_hre13 = array();
260$code_unique_hre14 = array();
261$code_unique_hre15 = array();
262$code_unique_hre16 = array();
263$code_unique_hre17 = array();
264$code_unique_hre18 = array();
265$code_unique_hre19 = array();
266$code_unique_hre20 = array();
267$code_unique_hre21 = array();
268$code_unique_hre22 = array();
269$code_unique_hre23 = array();
270$code_unique_hre24 = array();
271#############################################################
272
273		$code_unique = array();
274		while($row=mysql_fetch_array($result)){
275			//---------------------------------------
276			//-- Exclusion des Bad user agent reconnus (non compt� comme visiteur) ----
277			$User_Agent=$row[agent];
278			$trash=false;
279			for($nb_bad_user_agent=0;$nb_bad_user_agent<count($Matrice_bad_user_agent);$nb_bad_user_agent++){
280				if ($Matrice_bad_user_agent[$nb_bad_user_agent][0] == $User_Agent && $Matrice_bad_user_agent[$nb_bad_user_agent][2]=='S') {
281					$trash=true;
282				}
283			}
284			//---------------------------------------
285			//Visistes et pages vues hors robots et hors bad user agent
286			//Note: les barres visiteurs sont incr�ment� de 1 pour l'heure de la 1ere visite
287			//		les barres "pages visit�es" sont incr�ment�es par heure 
288			//		(si une m?me page est visit�e par un m?me visiteur la barre est incr�ment�e sur l'heure de la 1ere visite) pour eviter de remplir la table si spam
289			if(!preg_match($AllBots, $row[agent]) && $trash==false) {		
290				//################################ Pour comptabilise les visiteurs simultan�s par heure ################################################
291				$heure=$row[heure];
292				if(($heure>=0)&($heure<1)){	$heure1=$heure1+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre1)) {$v_heure1++; $code_unique_hre1[] = $row[code]; }}
293				if(($heure>=1)&($heure<2)){	$heure2=$heure2+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre2)) { $v_heure2++; $code_unique_hre2[] = $row[code]; }}
294				if(($heure>=2)&($heure<3)){	$heure3=$heure3+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre3)) { $v_heure3++; $code_unique_hre3[] = $row[code]; }}
295				if(($heure>=3)&($heure<4)){	$heure4=$heure4+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre4)) { $v_heure4++; $code_unique_hre4[] = $row[code]; }}
296				if(($heure>=4)&($heure<5)){	$heure5=$heure5+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre5)) { $v_heure5++; $code_unique_hre5[] = $row[code]; }}
297				if(($heure>=5)&($heure<6)){	$heure6=$heure6+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre6)) { $v_heure6++; $code_unique_hre6[] = $row[code]; }}
298				if(($heure>=6)&($heure<7)){	$heure7=$heure7+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre7)) { $v_heure7++; $code_unique_hre7[] = $row[code]; }}
299				if(($heure>=7)&($heure<8)){	$heure8=$heure8+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre8)) { $v_heure8++; $code_unique_hre8[] = $row[code]; }}
300				if(($heure>=8)&($heure<9)){	$heure9=$heure9+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre9)) { $v_heure9++; $code_unique_hre9[] = $row[code]; }}
301				if(($heure>=9)&($heure<10)){ $heure10=$heure10+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre10)) { $v_heure10++; $code_unique_hre10[] = $row[code]; }}
302				if(($heure>=10)&($heure<11)){ $heure11=$heure11+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre11)) { $v_heure11++; $code_unique_hre11[] = $row[code]; }}
303				if(($heure>=11)&($heure<12)){ $heure12=$heure12+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre12)) { $v_heure12++; $code_unique_hre12[] = $row[code]; }}
304				if(($heure>=12)&($heure<13)){ $heure13=$heure13+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre13)) { $v_heure13++; $code_unique_hre13[] = $row[code]; }}
305				if(($heure>=13)&($heure<14)){ $heure14=$heure14+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre14)) { $v_heure14++; $code_unique_hre14[] = $row[code]; }}
306				if(($heure>=14)&($heure<15)){ $heure15=$heure15+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre15)) { $v_heure15++; $code_unique_hre15[] = $row[code]; }}
307				if(($heure>=15)&($heure<16)){ $heure16=$heure16+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre16)) { $v_heure16++; $code_unique_hre16[] = $row[code]; }}
308				if(($heure>=16)&($heure<17)){ $heure17=$heure17+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre17)) { $v_heure17++; $code_unique_hre17[] = $row[code]; }}
309				if(($heure>=17)&($heure<18)){ $heure18=$heure18+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre18)) { $v_heure18++; $code_unique_hre18[] = $row[code]; }}
310				if(($heure>=18)&($heure<19)){ $heure19=$heure19+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre19)) { $v_heure19++; $code_unique_hre19[] = $row[code]; }}
311				if(($heure>=19)&($heure<20)){ $heure20=$heure20+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre20)) { $v_heure20++; $code_unique_hre20[] = $row[code]; }}
312				if(($heure>=20)&($heure<21)){ $heure21=$heure21+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre21)) { $v_heure21++; $code_unique_hre21[] = $row[code]; }}
313				if(($heure>=21)&($heure<22)){ $heure22=$heure22+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre22)) { $v_heure22++; $code_unique_hre22[] = $row[code]; }}
314				if(($heure>=22)&($heure<23)){ $heure23=$heure23+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre23)) { $v_heure23++; $code_unique_hre23[] = $row[code]; }}
315				if(($heure>=23)&($heure<24)){ $heure24=$heure24+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre24)) { $v_heure24++; $code_unique_hre24[] = $row[code]; }}
316
317				###########################################################################################################################################
318			}
319
320		}// End while
321		unset($code_unique);
322
323		$max=0;
324		$i=1;
325		while($i<=24){
326			$heure="heure$i";
327			if($$heure>$max){
328				$max=$$heure;
329			}
330			$i++;
331		}
332?>
333
334<TABLE CELLPADDING=1 CELLSPACING=0 class=TABLEBORDER>
335  <TBODY>
336  <TR>
337    <TD><!-- Data BEGIN -->
338      <TABLE CELLPADDING=5 CELLSPACING=0 class=TABLEFRAME><!-- header -->
339        <TBODY>
340        <TR>
341          <TH class=TABLETITLE><? echo $MSG_STAT_GRAF_TITRE." (".$MSG_ROBOTS_EXCLUS.")"; ?></TH>
342          </TR>
343        <TR>
344          <TD colSpan=2><!-- Rows BEGIN -->
345            <TABLE border=0 CELLPADDING=2 CELLSPACING=0 class=TABLEDATA>
346              <TBODY>
347              <TR>
348          		<td rowspan="2"><B><SPAN class=PAGESVUES><? echo $MSG_PAGESVISITES; ?></SPAN><BR>& 
349		  			<SPAN class=VISITES><? echo $MSG_VISITE; ?></SPAN></B>
350		  		</TD>
351          <?
352			//Pour affichage echelle
353			$EchyMin = '0';
354			if($max!=0){
355			  for($i=1;$i<=24;$i++){
356				$hour="heure$i";
357				$indice=bcdiv($$hour,$max,2); $hauteur=bcmul($indice,120.00,2);
358				if ($MaxHauteur <= $hauteur) { $MaxHauteur = $hauteur; }
359			  }
360			} else { // pour ne pas afficher 0 si $max = 0
361				$EchyMin  = '';	
362		  		$max = '';
363			}
364
365		  echo "<td nowrap=nowrap valign=\"top\">".$max."</td>";
366		  echo "<td rowspan=\"2\" valign=\"bottom\">
367			<img src=\"images/histo-v_black.gif\" height=\"".$MaxHauteur."\" width=\"1\" alt=\"\" title=\"\">
368		  </td>";
369			
370          for($i=1;$i<=24;$i++){
371          	$hour="heure$i";
372          	$v_hour="v_heure$i";
373				echo "<td rowspan=\"2\" valign=\"bottom\">";
374				if($max!=0) {
375					$indice=bcdiv($$hour,$max,2); $hauteur=bcmul($indice,120.00,2);
376				}
377				echo "<img src=\"images/histo-v.gif\" height=\"".$hauteur."\" width=\"8\" alt=\"".$$hour."\" title=\"".$$hour."\"><img src=\"images/histo-vv.gif\" height=\"";
378
379				if($max!=0){
380					$indice=bcdiv($$v_hour,$max,2); $hauteur=bcmul($indice,120.00,2);  
381				}
382				echo $hauteur;
383				echo "\" width=\"8\" alt=\"".$$v_hour."\" title=\"".$$v_hour."\">
384			</td>";
385 
386          }
387
388		?>
389		  </TR>
390		  <tr>
391			 <td align="right" valign="bottom"><?php echo $EchyMin; ?></td>
392		  </tr>
393		  
394              <TR>
395                <TD><B><? echo $MSG_GRAF_HEURE; ?></B></TD>
396         <?
397 
398 	     echo "<td align=center>&nbsp;</td><td align=center>&nbsp;</td>"; // Pour echelle
399         for($i=0;$i<24;$i++){
400	         if ($horloge==12 && $i>12){ 
401	         	$num=$i-12; 
402	         } else {
403	         	$num=$i;
404	         }
405	         echo "<td align=center>".$num."</td>";
406         }
407         if ($horloge==12){
408         	echo "<tr><td></td><td align=center colspan=12>AM</td><td align=center colspan=12>PM</td></tr>";
409         }
410         ?>
411</TR></TBODY></TABLE><!-- Rows END --></TD></TR><!-- footer -->
412        <TR>
413		  </TR></TBODY></TABLE><!-- Data END --></TD></TR></TBODY></TABLE><BR>
414
415<?
416		//#########################################################################################
417		//------------------------- Include tableau details robots ------------------------------
418		include_once('referant.php');
419		//########################################################################################
420		
421		//##############################################################################################
422		//------------------------------------ Pages visit�s -------------------------------------------
423		//TODO voir mettre en tableau avant
424		$result=mysql_query("select * from ".TABLE_VISITEUR." v,".TABLE_PAGE." p where v.date like '$when' and v.code=p.code order by page");
425		$nb_url=0;
426		$nb_vis=0;
427
428		while($row=mysql_fetch_array($result)){
429				//---------------------------------------
430			$User_Agent=$row[agent];
431			$trash=false;
432			for($nb_bad_user_agent=0;$nb_bad_user_agent<count($Matrice_bad_user_agent);$nb_bad_user_agent++){
433				if ($Matrice_bad_user_agent[$nb_bad_user_agent][0] == $User_Agent && $Matrice_bad_user_agent[$nb_bad_user_agent][2]=='S') {
434					$trash=true;
435				}
436			}
437				//---------------------------------------
438			//A voir est utilis� aussi dans r�f�rant.php, cumulpage.php et ailleurs ? A voir car algo obscur
439			if(!preg_match($AllBots, $row[agent]) && $trash==false) {
440				$page=$row[page];
441				if($all_pages==$page){
442					$nb_url=$nb_url+$row[nb_visite];
443					$nb_vis++;	
444				} else {
445					$nb=$nb_url*100; 
446					if($max_visite!=0){
447						$pourcent=bcdiv($nb,$max_visite,2);
448					}
449					$page_vue[]= array($all_pages,$nb_vis, $nb_url, $pourcent);
450					$all_pages=$page;
451					$nb_url=$row[nb_visite];
452					$nb_vis=1;
453				}
454			}
455		} // Fin while
456	
457		//---------------------------------------------------------------------------------------
458
459	//############################## Affichage du Top avec referer #######################################################
460?>
461<TABLE CELLPADDING=1 CELLSPACING=0 class=TABLEBORDER>
462  <TBODY>
463  <TR>
464    <TD><!-- Data BEGIN -->
465      <TABLE CELLPADDING=5 CELLSPACING=0 class=TABLEFRAME><!-- header -->
466        <TBODY>
467        <TR>
468          <TH class=TABLETITLE><? echo $MSG_TOP_TITRE.' ('.$MSG_ROBOTS_EXCLUS.')'; ?></TH>
469          </TR>
470        <TR>
471          <TD colSpan=2><!-- Rows BEGIN -->
472            <TABLE border=1 CELLPADDING=2 CELLSPACING=0 class=TABLEDATA>
473              <TBODY>
474              <TR>
475                <TH><? echo $MSG_TOP_ADDRESS; ?></TH>
476                <TH><? echo "IP"; ?></TH>
477				<TH><? echo $MSG_REFERANT; ?></TH>
478                <TH><? echo $MSG_PAGESVISITES; ?></TH>
479                <TH><? echo $MSG_PAGES_POURCENTAGE; ?></TH></TR>
480<?
481			$result=mysql_query("select * from ".TABLE_VISITEUR." where date='$when' order by nb_visite desc"); //limit 0,20
482			if (!$result) { //ex: si la table n'existe pas
483				echo 'Impossible d\'ex�cuter la requ?te : ' . mysql_error();
484				exit;
485			}
486	
487		while($Nb_lignes_affichees<20 && $row=mysql_fetch_array($result)){
488	
489			//---------------------------------------
490			$User_Agent=$row[agent];
491			$trash=false;
492			for($nb_bad_user_agent=0;$nb_bad_user_agent<count($Matrice_bad_user_agent);$nb_bad_user_agent++){
493				if ($Matrice_bad_user_agent[$nb_bad_user_agent][0] == $User_Agent && $Matrice_bad_user_agent[$nb_bad_user_agent][2]=='S') {
494					$trash=true;
495				}
496			}
497			//---------------------------------------
498		
499			if(!preg_match($AllBots, $row[agent]) && $trash==false) {
500		
501				$Nb_lignes_affichees = $Nb_lignes_affichees+1;
502				$max=20;	 // Nombre de caract?res max
503				$coupe ="";
504				if(strlen($row["host"])>=$max)  {
505				//$coupe = strpos($row["host"],"."); 
506				$coupe = 20; 
507				}
508	
509				//col host
510				if($coupe) {
511					$chaine1 = substr($row["host"], 0, $coupe);
512					$chaine2 = substr($row["host"], $coupe, strlen($row["host"]));
513					echo "<tr><td nowrap>".$chaine1."<br>".$chaine2."</td>";
514				} else {
515					echo "<tr><td nowrap>".$row["host"]."</td>";		  
516				}
517				
518				//col IP
519				echo "<td>".$row["ip"]."</td>";
520
521				//col referer
522				echo "<td nowrap=nowrap>��";
523				$num = "";	//Important		
524				$host = parse_url($row["referer"]);
525				$query = $host["query"];
526				parse_str($query);				
527				$url_site = parse_url($site);
528
529				if($host["host"]<>$url_site["host"]){
530					$aff_referer = $row["referer"];
531					//Attention peut ?tre "?" ou "&" (voir visiteur.php)
532					if (strstr($aff_referer,'googlesyndication=1')) { 
533						$aff_referer = str_replace('?googlesyndication=1', '', $aff_referer);
534						$aff_referer = str_replace('&googlesyndication=1', '', $aff_referer); //ici il ne faut pas htmlentities('&googlesyndication=1')
535						$link = $aff_referer;
536						if (strlen($aff_referer.strip_tags($MSG_ADWORDS_CONTENT_NETWORK))>60) { $aff_referer=substr($aff_referer,0,30).'...'; }
537						echo "<a href=\"$link\" target=\"_new\">".utf8_decode(urldecode($aff_referer))."</a><font color=#666666>&nbsp;&nbsp;".$MSG_ADWORDS_CONTENT_NETWORK."</font>";
538					// ------------------------- EN TEST -----------
539					} elseif ( strstr($host["host"],'google') && strstr($row["referer"],'source=web')) { //Un peu vague avec seulement source
540						if (strlen($aff_referer)>40) { $aff_referer=substr($aff_referer,0,40).'...'; }
541						echo "<a href=\"".$row["referer"]."\" target=\"_new\">".utf8_decode(urldecode($aff_referer))."</a> <br>";
542						
543						if ($num<>"") { //Calcul d�but 1ere page google ou se trouve le mot cl�
544							$start  = @floor($cd/$num)*10 ; 
545						} else {
546							$start  = @floor($cd/10)*10 ; // Default num = 10
547						}
548						
549						$New_link_google = 'http://'.$host["host"].'/search?q='.$q.'&start='.$start;
550						$aff_New_link_google = $New_link_google;
551						if (strlen($aff_New_link_google)>50) { $aff_New_link_google=substr($aff_New_link_google,0,50).'...'; } 
552						echo '&nbsp;&nbsp;Google link:<br>&nbsp;&nbsp;<a href="'.$New_link_google.'" target="_new">'.utf8_decode(urldecode($aff_New_link_google))."</a>";
553					//----------------------------------------------
554					} else {
555						if (strlen($aff_referer)>50) { $aff_referer=substr($aff_referer,0,50).'...'; }
556						echo "<a href=\"$row[referer]\" target=\"_new\">".utf8_decode(urldecode($aff_referer))."</a>";
557					}
558				}
559					
560				echo "</td>
561				<td align=center>".$row["nb_visite"]."</td>
562				<td align=center>"; 
563				$nb = $row["nb_visite"]*100; 
564				if($max_visite!=0){
565					$pourcent=bcdiv($nb,$max_visite,2); 
566				}
567				echo $pourcent."%&nbsp;</td>
568				</tr>
569				";
570			}
571		}
572		//------------------------------------------------------------------------------------------------      
573?>    
574<!-- no footer --></TBODY></TABLE>
575<!--
576			<TR>
577			  <TH colSpan=2>
578				<form name="form1" method="post" action="<?PHP_SELF;?>">
579					<input name="type" type="hidden" value="referant">
580					<input name="when" type="hidden" value="<? //echo $when; ?>">
581					<input name="display_best_referer" type="hidden" value="<? //echo true; ?>">
582					<input class="submit" name="detail_ref" type="submit" value="<? //echo $MSG_DETAIL_REF; ?>" alt="<? //echo $MSG_DETAIL_REF; ?>" >
583				</form>
584				</TH>
585			</TR>
586-->			
587</TBODY></TABLE><!-- Rows END --></TD></TR><!-- Data END --></TD></TR></TBODY></TABLE><BR>
588<?
589		//##############################################################################################
590
591
592		//################################# Affichage page visit�s hors robots ############################################
593?>
594
595<TABLE CELLPADDING=1 CELLSPACING=0 class=TABLEBORDER>
596  <TBODY>
597  <TR>
598    <TD><!-- Data BEGIN -->
599      <TABLE CELLPADDING=5 CELLSPACING=0 class=TABLEFRAME><!-- header -->
600        <TBODY>
601        <TR>
602          <TH class=TABLETITLE><? echo $MSG_PAGESVISITES.' ('.$MSG_ROBOTS_EXCLUS.')'; ?></TH>
603          </TR>
604        <TR>
605          <TD colSpan=2><!-- Rows BEGIN -->
606            <TABLE border=1 CELLPADDING=2 CELLSPACING=0 class=TABLEDATA>
607              <TBODY>
608              <TR>
609                <TH><? echo $MSG_PAGE; ?></TH>
610                <TH><? echo $MSG_VISITE; ?></TH>
611                <TH><? echo $MSG_PAGESVISITES; ?></TH>
612                <TH><? echo $MSG_PAGES_POURCENTAGE; ?></TH></TR>
613<?
614				//----------------------------------------
615				$nb=$nb_url*100; 
616				if($max_visite!=0){
617					$pourcent=bcdiv($nb,$max_visite,2);
618				}
619				$page_vue[]= array($all_pages,$nb_vis, $nb_url, $pourcent);
620			
621				@usort($page_vue, "CompareValeurs");
622				$cpt=0;
623				
624				//print_r($page_vue);
625				while ($page_vue[$cpt][0]){ 
626					echo "<tr><td>".utf8_decode($page_vue[$cpt][0])."</td><td align=center>".$page_vue[$cpt][1]."</td><td align=center>".$page_vue[$cpt][2]."</td><td align=center>".$page_vue[$cpt][3]."%</td></tr>";
627					$cpt++;
628				}
629				unset($page_vue);
630?>      
631</TBODY></TABLE><!-- Rows END --></TD></TR><!-- no footer --></TBODY></TABLE><!-- Data END --></TD></TR></TBODY></TABLE><BR>
632<?
633		//############################# Affichage Operating system, navigateurs ################
634		$max=0;
635		$result=mysql_query("select * from ".TABLE_VISITEUR." where date='$when'");
636		$nbr_result=mysql_num_rows($result);
637		
638		
639		$AfficheOS=true;
640		$AfficheNav=true;
641		$AfficheRobots=false;
642		include('tab_os_nav_robots.php');
643
644	//###################### Affichage Origine g�ographique des viteurs (hors robots) ###############################
645?>
646<TABLE width="100%" CELLPADDING=1 CELLSPACING=0 class=TABLEBORDER>
647  <TBODY>
648  <TR>
649    <TD><!-- Data BEGIN -->
650      <TABLE CELLPADDING=5 CELLSPACING=0 class=TABLEFRAME><!-- header -->
651        <TBODY>
652        <TR>
653          <TH class=TABLETITLE><? echo $MSG_DOMAIN_TITRE.' ('.$MSG_ROBOTS_EXCLUS.')'; ?></TH>
654          </TR>
655        <TR>
656          <TD colSpan=2><!-- Rows BEGIN -->
657            <TABLE border=1 CELLPADDING=2 CELLSPACING=0 class=TABLEDATA>
658              <TBODY>
659              <TR>
660                <TH><? echo $MSG_DOMAIN; ?></TH>
661                <TH><? echo $MSG_NB_VISITEURS; ?></TH>
662                <TH><? echo $MSG_PAGESVISITES; ?></TH>
663			  </TR>
664      <?
665
666		$result=mysql_query("select agent, nb_visite ,domaine from ".TABLE_VISITEUR." where date='$when'");
667		while($row=mysql_fetch_array($result)){
668			$Country[] .= $row['domaine'];
669		}
670		$Country = @array_unique($Country);
671		@array_multisort ($Country, SORT_ASC); 
672
673		//----------------------------------
674		//Important mise ? 0 des variables
675		unset($Tab_country_pages_visiteurs);
676		for($i=0;$i<count($Country);$i++){ //Comment faire autrement
677			$Nb_visites = 'Nb_'.$Country[$i];
678			$$Nb_visites = 0;
679	
680			$Nb_pages_visites = $Country[$i];
681			$$Nb_pages_visites = 0;
682		}
683		//-----------------------------------
684
685		$result=mysql_query("select * from ".TABLE_VISITEUR." where date='$when'");
686		while($row=mysql_fetch_array($result)){
687			//---------------------------------------
688			$User_Agent=$row[agent];
689			$trash=false;
690			for($nb_bad_user_agent=0;$nb_bad_user_agent<count($Matrice_bad_user_agent);$nb_bad_user_agent++){
691				if ($Matrice_bad_user_agent[$nb_bad_user_agent][0] == $User_Agent && $Matrice_bad_user_agent[$nb_bad_user_agent][2]=='S') {
692					$trash=true;
693				}
694			}
695				//---------------------------------------
696			if(!preg_match($AllBots, $row[agent]) && $trash==false) {
697				for($i=0;$i<count($Country);$i++){
698					if($row[domaine]==$Country[$i]) {
699						$Nb_visites = 'Nb_'.$Country[$i];
700						$$Nb_visites = $$Nb_visites + 1;
701	
702						$Nb_pages_visites = $Country[$i];
703						$$Nb_pages_visites = $$Nb_pages_visites + $row['nb_visite'];
704	
705						$Tab_country_pages_visiteurs[$i] = array($Country[$i],$$Nb_pages_visites,$$Nb_visites);
706					}
707				}
708			}
709		}
710		//--------- Affichage des r�sultats --------------------------
711		@usort($Tab_country_pages_visiteurs,"CompareValeurs");
712		$indice = @bcdiv(1,($Tab_country_pages_visiteurs[0][1]/300),2); //proportion en rapport au plus grand nb de pages visit�s
713
714		for($i=0;$i<count($Tab_country_pages_visiteurs);$i++){
715			if ($Tab_country_pages_visiteurs[$i][0]=='') { $Tab_country_pages_visiteurs[$i][0] = $MSG_ORIGIN_UNKNOWN;}
716			echo "<tr>
717			<td> 
718			<b>".$Tab_country_pages_visiteurs[$i][0]."</b>
719			</td>
720			<td align=\"left\">
721			<img src=\"images/histo-h.gif\" width=\""; 
722			$hauteur=bcmul($Tab_country_pages_visiteurs[$i][2],$indice,2);  
723			echo $hauteur; 
724			echo"\" height=\"8\">".$Tab_country_pages_visiteurs[$i][2].
725			"</td>
726			<td align=\"left\">
727			<img src=\"images/histo-h.gif\" width=\""; 
728			$hauteur=bcmul($Tab_country_pages_visiteurs[$i][1],$indice,2);  
729			echo $hauteur; 
730			echo"\" height=\"8\">".$Tab_country_pages_visiteurs[$i][1].
731			"</td>";	
732		}
733?>    
734</TBODY></TABLE><!-- Rows END --></TD></TR><!-- no footer --></TBODY></TABLE><!-- Data END --></TD></TR></TBODY></TABLE><br>