PageRenderTime 51ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 1ms

/modules/visitstat/normal.php

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