voguersurlavague /modules/visitstat/referant.php

Language PHP Lines 355
MD5 Hash ddd63536222c6eb17c5c65cc711832ec Estimated Cost $4,568 (why?)
Repository https://bitbucket.org/meianki/voguersurlavague View Raw File
  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
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
<?
/*
 -------------------------------------------------------------------------
 AllMyStats V1.39 - Statistiques de fréquentation visiteurs et robots
 -------------------------------------------------------------------------
 Copyright (C) 2000 - Cédric TATANGELO (Cedstat)
 Copyright (C) 2008 - Herve Seywert
 -------------------------------------------------------------------------
 Web:   http://www.wertronic.com
 -------------------------------------------------------------------------
 Ce programme est libre, vous pouvez le redistribuer et/ou le modifier
 selon les termes de la Licence Publique Génrale GNU publiée par la Free
 Software Foundation .
 -------------------------------------------------------------------------
*/

		//-----------------------------------------------------------------------------
		//Mise en en forme ($AllBots) pour preg_match des bots connus (dans la table + bot en générale (bot, spider , etc)
		$result1=mysql_query("select bot_name, org_name, crawler_url, crawler_info from ".TABLE_CRAWLER.""); 
		if (!$result1) { //ex: si la table n'existe pas
			echo 'Impossible d\'exécuter la requ?te : ' . mysql_error();
			exit;
		}

		$AllBots = '/Bot|Slurp|Scooter|Spider|crawl|';
		while($row=mysql_fetch_array($result1)){
			$Form_chaine = str_replace('/','\/',$row['bot_name']);
			$Form_chaine = str_replace('+','\+',$Form_chaine);
			$Form_chaine = str_replace('(','\(',$Form_chaine);
			$Form_chaine = str_replace(')','\)',$Form_chaine);
			$AllBots .= $Form_chaine.'|';
		}
		$AllBots = substr($AllBots,0,strlen($AllBots)-1); //del last |
		$AllBots .= '/i';
		//-------------------- Mise en tableau de la table bad user agent - FAUT il refaire ou mettre en funct --------
		unset($Matrice_bad_user_agent); //Important car si vient de normal.php double tout
		$Bad_User_Agent=mysql_query("select * from ".TABLE_BAD_USER_AGENT.""); //
		while($bad_agents=mysql_fetch_array($Bad_User_Agent)){ // Mise en tableau des bad agents
			$Matrice_bad_user_agent[] = array($bad_agents['user_agent'], $bad_agents['info'],$bad_agents['type']);
		}
		//-------------------------------------------------------------------------------------------------------------

?>

<TABLE CELLPADDING=1 CELLSPACING=0 class=TABLEBORDER>
  <TBODY>
  <TR>
    <TD><!-- Data BEGIN -->
      <TABLE CELLPADDING=5 CELLSPACING=0 class=TABLEFRAME><!-- header -->
        <TBODY>
        <TR>
          <TH class=TABLETITLE><? 
				echo $MSG_REF_TITRE; 
				if($display_best_referer) {
					echo ' - '.$when;
				} 
		  ?></TH>
          </TR>
        <TR>
          <TD colSpan=2><!-- Rows BEGIN -->
            <TABLE border=1 CELLPADDING=2 CELLSPACING=0 class=TABLEDATA>
              <TBODY>
              <TR>
                <TH><? echo $MSG_REFERANT; ?></TH>
                <TH><? echo $MSG_REF_MOTCLE; ?></TH>
                <TH><? echo $MSG_VISITEURS; ?></TH>
			  </TR>
<?	
	require "config_moteur.php"; 

	//-------------------------------------------------------------------------------------------
	unset($Tab_referer);
	$result = mysql_query("select * from ".TABLE_VISITEUR." where date='$when' order by referer");

$nb_unknow = 0;
	while($row = mysql_fetch_array($result)){
		$referer = parse_url($row['referer']);
		
		if(!preg_match($AllBots, $row['agent'])) { // && $trash == false A voir exlus aussi les "bad user agent"
/*
//En test pour afficher la position en face des mots clés  -----------------
			$start="";
			$cd="";
			$referer = parse_url($row['referer']);
			//$host = parse_url($test_agent['referer']);
			$query = $referer["query"];
			parse_str($query);				
			
			echo $row['referer']."<br>";
			
			if (strstr($referer["host"],'google') && strstr($row['referer'],'source=web')) {
			echo "Google Position = ".$cd."<br>";
			} elseif ( strstr($referer["host"],'google') && !strstr($row['referer'],'source=web') && $start ) { 
			echo "Google page start = ".$start."<br>";
			} elseif ( strstr($referer["host"],'google') && !strstr($row['referer'],'source=web') && !$start ) {
			echo "Google 1ere page<br>";
			}
//------------------------------------------------------------------------------
*/
			//--------------------- extraction mots clés -------------
			$url = parse_url($site);
			$ref = $referer["host"];
	
			if($ref<>$url["host"]){
				//Pour les adwords l'url est trouvée car dans visiteur.php est ajouté au referer $Referer = urldecode($Url_syndication[0]). '?googlesyndication=1' ou '&googlesyndication=1';
				$test_keword[] = array($ref,MotsCles($row['referer'],$ref));
			}
			//--------------------------------------------------------
			//--------------- ext referer et nb visite ---------------
			if ($row['referer']) { //
				$Tab_referer[] = $referer['host'];
			} else { //Visiteurs avec user agent et referer vide modif 31-08-2009
				$Tab_referer[] = "Unknown or direct";
				$nb_unknow = $nb_unknow + 1;
			}
		}
	}

		//Attention array_unique ne garde que les clés différentes mais garde la chronologie --> faire usort($Tab_referer, "CompareValeurs"); apr?s
		$Tab_referer_unique = @array_unique($Tab_referer);
		@usort($Tab_referer_unique, "CompareValeurs");
		unset($Tab_aff_ref);
		//Il faut compter le nombre de visites mais pas si user agent est un bot
		for($i=0;$i<count($Tab_referer_unique);$i++){ 
			$result_agent = mysql_query("select agent, referer from ".TABLE_VISITEUR." where referer like '%".$Tab_referer_unique[$i]."%' and agent NOT REGEXP '".$AllBots."' and date like '%$when'");
			$test_agent = mysql_fetch_array($result_agent);

			//Plus necessaire si utilisation de and agent NOT REGEXP '".$AllBots."' if(!preg_match($AllBots, $test_agent['agent'])) n'est pas nécessaire mais certainement plus rapide comme ça
			if(!preg_match($AllBots, $test_agent['agent'])) { // && $trash == false A voir exlus aussi les "bad user agent" modif 31-08-2009

				if (trim($Tab_referer_unique[$i])<>'') {
					
					//NOTE google est en plein bricolage 31-08-2009
					//as_q au lieu de q pour les keyword
					//Leur nouveau format /url?sa ... source= etc.. avec en plus quelques fois le host du FAI de l'internaute dans la ligne dont la longueur n'en finit plus
					//donc certain mots clés sortes des 255 caract?res du champs mysql (était ? 200 --> le passer ? 255 ou m?me 512)
					//C'est pour ça que de temps en temps le total mots clé ne correspond pas 
					if ( strstr(trim($Tab_referer_unique[$i]), 'google') ) {
						$result = mysql_query("select count(*) as somme from ".TABLE_VISITEUR." where referer like '%".$Tab_referer_unique[$i]."%' and agent NOT REGEXP '".$AllBots."' and date like '%$when'");
					} else {
						$result = mysql_query("select count(*) as somme from ".TABLE_VISITEUR." where referer like '%".$Tab_referer_unique[$i]."%' and agent NOT REGEXP '".$AllBots."' and referer not like '%source=web%' and referer not like '%source=hp%' and date like '%$when'");
					}
					
					if (!$result) {
					   echo 'Impossible d\'exécuter la requ?te : ' . mysql_error();
					   exit;
					}
	
					$row_nb_visites = mysql_fetch_row($result);
					//------------------------------------------
					//tab mots clé/referant
					for($i2=0;$i2<count($test_keword);$i2++){ 
						if(strstr($test_keword[$i2][0],$Tab_referer_unique[$i])) {
								$referer_kew[$i] .= $test_keword[$i2][1].' ';
						}
					}
					//------------------------------------------
					
					if ($row_nb_visites[0] == 0){ //si = 0 => referer vide (donc result mysql vide) user agent et referer vide modif 31-08-2009
						$row_nb_visites[0] = $nb_unknow;
					}
	
					$Tab_aff_ref[] = array($row_nb_visites[0], $Tab_referer_unique[$i],$referer_kew[$i]); //dans ce sens car on trie sur nb visites
				}
			}
		}

		//--------------------------------------------------
		// Mise en forme mots clés googlesyndication et Affichage
		@array_multisort($Tab_aff_ref,SORT_DESC);
		for($i=0;$i<count($Tab_aff_ref);$i++){ 

			//echo $Tab_aff_ref[$i][2]."<br><br>";
			$Mots_by_referer =  str_replace('] [', ']+-+[', $Tab_aff_ref[$i][2]);
			$Mots_by_referer =  str_replace(']  [', ']+-+[', $Mots_by_referer); // car certains comportent 2 espaces --> A voir o? ils sont mis ou supprimmer espaces multiples
			$Mots_by_referer =  str_replace(']   [', ']+-+[', $Mots_by_referer);// car certains comportent 3 espaces --> A voir o? ils sont mis
			$Mots_by_referer = $Mots_by_referer; //On met en minuscule dans config_moteur.php
			//echo $Mots_by_referer."<br><br>";
			
			unset($Tab_motcles);
			$Tab_motcles = explode('+-+',$Mots_by_referer);
			for($j=0;$j<count($Tab_motcles);$j++){ 
				$Tab_motcles[$j] = trim($Tab_motcles[$j]); // trim trés important pour array_unique apr?s str_replace
				//echo $Tab_motcles[$j]."<br>";
			}
			
			unset($Tab_motcles_unique);
			$Tab_motcles_unique = array_unique($Tab_motcles);
			//print_r($Tab_motcles_unique);
			//----------------------
			unset($tab_keywords);
			for($j=0;$j<=count($Tab_motcles_unique);$j++){ //= sinon n'affiche pas le dernier mot en cours
				if (trim($Tab_motcles_unique[$j])) {
					$tab_keywords[] = array($Tab_motcles_unique[$j], substr_count($Mots_by_referer, $Tab_motcles_unique[$j]));
				}
			}
			
			// Obtient une liste de colonnes
			unset($Mot);
			unset($Nb);
			if ($tab_keywords) {
				foreach ($tab_keywords as $key => $row) {
					$Mot[$key]  = $row[0];
					$Nb[$key] = $row[1];
				}
			}
			
			// Trie les données par volume croissant
			// Ajoute $tab_keywords en tant que dernier param?tre, pour trier par la clé commune
			@array_multisort($Nb, SORT_DESC, $tab_keywords);
			//---------------------------------------------------------------
			//Affichage
			$lenmax=35;
			if (strlen($Tab_aff_ref[$i][1])>$lenmax) {
				$chaine1=substr($Tab_aff_ref[$i][1], 0, $lenmax);
				$chaine2=substr($Tab_aff_ref[$i][1], $lenmax);
				$Tab_aff_ref[$i][1] = $chaine1."<br>".$chaine2;
			}
			//-----------------------------
			//Pour affichage googlesyndication
				echo "<tr><td valign=top>".$Tab_aff_ref[$i][1]."</td>
				<td nowrap>"; //Référant
			
				if (count($Tab_motcles_unique)>1) {	
					echo "<span> Différents: ". count($Tab_motcles_unique)."</span>";
				}
				for($j=0;$j<count($tab_keywords);$j++){ //Affiche les phrases clés
					
					if (strstr($tab_keywords[$j][0],'googlesyndication=1')) { 
						$tab_keywords[$j][0] = str_replace('?googlesyndication=1', '<font color=#666666>&nbsp;&nbsp;'.utf8_encode($MSG_ADWORDS_CONTENT_NETWORK).'</font><br>', $tab_keywords[$j][0]);
						$tab_keywords[$j][0] = str_replace(htmlentities('&googlesyndication=1'), '<font color=#666666>&nbsp;&nbsp;'.utf8_encode($MSG_ADWORDS_CONTENT_NETWORK).'</font><br>', $tab_keywords[$j][0]);//ici il faut htmlentities('&googlesyndication=1'), voir si ne serait pas mieux au niveau de config moteur
						$tab_keywords[$j][0] = substr(trim($tab_keywords[$j][0]),0,-5); //supp le dernier '<br> '
					}

					echo "<br><span><font color=#990000>".trim(utf8_decode(urldecode($tab_keywords[$j][0])))."</font></span>";
				}
				echo "&nbsp;</td>
				<td nowrap>";

				echo "<span> Total: ".$Tab_aff_ref[$i][0]."</span>";
				for($j=0;$j<count($tab_keywords);$j++){ //affiche le nombre de visite pour chaque mot ou référant
						echo "<br><span><font color=#990000>".utf8_decode(urldecode($tab_keywords[$j][1]))."</font></span>"; 
				}

				echo "&nbsp;</td></tr>";
				
			//----------------------------
		}

		unset($Tab_referer);
		unset($Tab_referer_unique);
		unset($row_nb_visites);
		unset($Tab_aff_ref);
	//--------------------------------------------------------------------------------
?>      
	 </TBODY></TABLE><!-- Rows END --></TD></TR><TR>
		<?	
		if($display_best_referer) {
		?>
			<TH colSpan=2><SPAN class=TABLEHREF>
				<form name="form1" method="post" action="<?PHP_SELF;?>">
					<input name="when" type="hidden" value="<? echo $when; ?>">
					<input class="submit" name="detail_ref" type="submit" value="<? echo $MSG_RETOUR; ?>" alt="<? echo $MSG_RETOUR; ?>" >
				</form></SPAN></TH>
		<?	
		}
		?>
</TR><!-- no footer --></TBODY></TABLE><!-- Data END --></TD></TR></TBODY></TABLE><BR>

<?	
	##################################### Affichage meilleurs référants ###########################################################
if($display_best_referer) {
?>
	<TABLE CELLPADDING=1 CELLSPACING=0 class=TABLEBORDER>
	  <TBODY>
	  <TR>
		<TD><!-- Data BEGIN -->
		  <TABLE CELLPADDING=5 CELLSPACING=0 class=TABLEFRAME><!-- header -->
			<TBODY>
			<TR>
			  <TH class=TABLETITLE><? echo $MSG_REF_CUMUL; ?></TH>
			  </TR>
			<TR>
			  <TD colSpan=2><!-- Rows BEGIN -->
				<TABLE border=1 CELLPADDING=2 CELLSPACING=0 class=TABLEDATA>
				  <TBODY>
				  <TR>
					<TH><? echo $MSG_REFERANT; ?></TH>
					<TH><? echo $MSG_VISITEURS; ?></TH>
				  </TR>
	<?	
	
			unset($Tab_referer);
		
			$date=explode("/",$when);
			$result=mysql_query("select * from ".TABLE_VISITEUR." where date like '%/".$date[1]."/".$date[2]."' order by referer");
		
			while($row=mysql_fetch_array($result)){
				$referer=parse_url($row[referer]);
				if ($row[referer]) {
					$Tab_referer[] = $referer[host];
				}
			}
			
			//Attention array_unique ne garde que les clés différentes mais garde la chronologie --> faire usort($Tab_referer, "CompareValeurs"); apr?s
			$Tab_referer_unique = @array_unique($Tab_referer);
			@usort($Tab_referer_unique, "CompareValeurs");
	
			for($i=0;$i<count($Tab_referer_unique);$i++){ 
				if (trim($Tab_referer_unique[$i])<>'') {
					$result=mysql_query("select count(*) as somme from ".TABLE_VISITEUR." where referer like '%".$Tab_referer_unique[$i]."%' and date like '%/".$date[1]."/".$date[2]."'");
	
					if (!$result) {
					   echo 'Impossible d\'exécuter la requ?te : ' . mysql_error();
					   exit;
					}
	
					$row_nb_visites=mysql_fetch_row($result);
					$Tab_aff_ref[] = array($row_nb_visites[0], $Tab_referer_unique[$i]); //dans ce sens car on trie sur nb visites
				}
			}
			
			unset($Tab_referer);
			unset($Tab_referer_unique);
			unset($row_nb_visites);
				
				//------------------------------------------------		
				//Affichage du total adwords googlesyndication pour le mois
				$resultgooglesyndication=mysql_query("select count(*) as somme from ".TABLE_VISITEUR." where referer like '%googlesyndication%' and date like '%/".$date[1]."/".$date[2]."'");
				$row_nb_googlesyndication=mysql_fetch_row($resultgooglesyndication);
			if($row_nb_googlesyndication[0]) {
				echo "<tr><td>Total Adwords réseau de contenu</td><td>".$row_nb_googlesyndication[0]."</td></tr>";
			}
				//------------------------------------------------
			//Affichage 
			@array_multisort($Tab_aff_ref,SORT_DESC);
			for($i=0;$i<count($Tab_aff_ref);$i++){ 
				echo "<tr><td>".$Tab_aff_ref[$i][1]."</td><td>".$Tab_aff_ref[$i][0]."</td></tr>";
			}
			unset($Tab_aff_ref);
	
	?>      
	 </TBODY></TABLE><!-- Rows END --></TD></TR><TR>
			  <TH colSpan=2><SPAN class=TABLEHREF>
				<form name="form1" method="post" action="<?PHP_SELF;?>">
					<input name="when" type="hidden" value="<? echo $when; ?>">
					<input class="submit" name="detail_ref" type="submit" value="<? echo $MSG_RETOUR; ?>" alt="<? echo $MSG_RETOUR; ?>" >
				</form>
			  </SPAN></TH></TR>
	</TBODY></TABLE><!-- Rows END --></TD></TR><!-- no footer --></TBODY></TABLE><!-- Data END -->
<? 
} // end if($display_best_referer) {
?>	
	</TD></TR></TBODY></TABLE>
Back to Top