[ Index ] |
|
Code source de SPIP 1.9.2c |
1 <?php 2 3 /***************************************************************************\ 4 * SPIP, Systeme de publication pour l'internet * 5 * * 6 * Copyright (c) 2001-2007 * 7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * 8 * * 9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * 10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * 11 \***************************************************************************/ 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 14 15 # interface obsolete (?) 16 // http://doc.spip.org/@ecrire_stats 17 function ecrire_stats() {public_stats_dist();} 18 19 // http://doc.spip.org/@public_stats_dist 20 function public_stats_dist() { 21 22 // Rejet des robots (qui sont pourtant des humains comme les autres) 23 if (preg_match( 24 ',google|yahoo|msnbot|crawl|lycos|voila|slurp|jeeves|teoma,i', 25 $_SERVER['HTTP_USER_AGENT'])) 26 return; 27 28 // Identification du client 29 $client_id = substr(md5( 30 $GLOBALS['ip'] . $_SERVER['HTTP_USER_AGENT'] 31 // . $_SERVER['HTTP_ACCEPT'] # HTTP_ACCEPT peut etre present ou non selon que l'on est dans la requete initiale, ou dans les hits associes 32 . $_SERVER['HTTP_ACCEPT_LANGUAGE'] 33 . $_SERVER['HTTP_ACCEPT_ENCODING'] 34 ), 0,10); 35 36 // Analyse du referer 37 $log_referer = ''; 38 if (isset($_SERVER['HTTP_REFERER'])) { 39 $url_site_spip = preg_replace(',/$,', '', 40 preg_replace(',^(https?://)?(www\.)?,i', '', 41 url_de_base())); 42 if (!(($url_site_spip<>'') 43 AND strpos('-'.strtolower($_SERVER['HTTP_REFERER']), strtolower($url_site_spip)) 44 AND !isset($_GET['var_recherche']))) { 45 $log_referer = $_SERVER['HTTP_REFERER']; 46 $referer_md5 = '0x'.substr(md5($log_referer), 0, 15); 47 } 48 } 49 50 // 51 // stockage sous forme de fichier ecrire/data/stats/client_id 52 // 53 54 // 1. Chercher s'il existe deja une session pour ce numero IP. 55 $content = array(); 56 $fichier = sous_repertoire(_DIR_TMP, 'visites') . $client_id; 57 if (lire_fichier($fichier, $content)) 58 $content = @unserialize($content); 59 60 // 2. Plafonner le nombre de hits pris en compte pour un IP (robots etc.) 61 // et ecrire la session 62 if (count($content) < 200) { 63 64 // Identification de l'element 65 // Attention il s'agit bien des $GLOBALS, regles (dans le cas des urls 66 // personnalises), par la carte d'identite de la page... ne pas utiliser 67 // _request() ici ! 68 if (isset($GLOBALS['id_article'])) 69 $log_type = "article"; 70 else if (isset($GLOBALS['id_breve'])) 71 $log_type = "breve"; 72 else if (isset($GLOBALS['id_rubrique'])) 73 $log_type = "rubrique"; 74 else 75 $log_type = ""; 76 77 if ($log_type) 78 $log_type .= "\t" . intval($GLOBALS["id_$log_type"]); 79 else $log_type = "autre\t0"; 80 81 $log_type .= "\t" . trim($log_referer); 82 if (isset($content[$log_type])) 83 $content[$log_type]++; 84 else $content[$log_type] = 1; // bienvenue au club 85 86 ecrire_fichier($fichier, serialize($content)); 87 } 88 } 89 90 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Wed Nov 21 10:20:27 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |