[ Index ]
 

Code source de SPIP 1.9.2c

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/ecrire/public/ -> stats.php (source)

   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  ?>


Généré le : Wed Nov 21 10:20:27 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics