zippo collection
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
zippo collection

forum non-officiel de collectionneurs de briquets à essence de marque zippo
 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
Le Deal du moment :
Réassort du coffret Pokémon 151 ...
Voir le deal

 

 Gestion des compteurs de visite sur site web

Aller en bas 
2 participants
AuteurMessage
bobzippo
PAT.PENDING
PAT.PENDING
bobzippo


Nombre de messages : 4413
Age : 73
Localisation : Ile de France
Date d'inscription : 07/10/2005

Gestion des compteurs de visite sur site web Empty
MessageSujet: Gestion des compteurs de visite sur site web   Gestion des compteurs de visite sur site web EmptySam 9 Sep 2006 - 17:08

Bonjour à tous,

J'ai un problème avec mes compteurs sur mon site web.
J'utilise ceux fournis par orange (ex-wanadoo) et je trouve une différence sensible entre leurs relevés et le décompte fait par orange.

Aujourd'hui mon site a été visité 114 fois et mon compteur n'indique que 7 visites.
Comment faites-vous avec votre site?
Avez vous un moyen de controler tout ça?

Cdt, Robert
Revenir en haut Aller en bas
http://vietnam.zippo.free.fr
M@nson
passionné
passionné
M@nson


Nombre de messages : 120
Date d'inscription : 28/08/2006

Gestion des compteurs de visite sur site web Empty
MessageSujet: Re: Gestion des compteurs de visite sur site web   Gestion des compteurs de visite sur site web EmptyLun 11 Sep 2006 - 19:52

Alors crée un fichier config.inc.php avec dedans : ( oublie pas de le completer ^^ )

Code:

<?php
/********************************
* ------------------         *
* | config.inc.php |         *
* ------------------         *
* 07/04/06               *
* 3in1Compteur - version 0.1b   *
*                     *
* Site officiel :            *
* http://www.notoon.com      *
* =============================   *
*    (c) 2006 NotoOn         *
*    Tous droits réservés      *
********************************/


// Paramètres de connexion
$base_serveur = '********'; // serveur de la base de données
$base_utilisateur = '******'; // nom d'utilisateur
$base_mdp = '*******'; // mot de passe
$base_nom = '*****'; // nom de la base de données
$base_table = '********';   // nom de la table qui sera créée sans espaces (par défaut : compteur)

// Paramètres du compteur
$garder_ip = 2;   // nombre de jours que sont conservées les IP dans la base de données (défaut : 2 jours)
$intervalle = 2;   // intervalle de temps en minutes pour compter le nombre de connectés des X dernières minutes (défaut : 2 minutes)
$periode = 24;   // durée en heures pendant laquelle une IP est comptée comme unique (défaut : 24h)
$total_initial = 0;   // nombre initial de visiteurs au compteur
$exclure_ip = array(); // liste des IP (partielles ou complètes) à ajouter sous la forme array('127.0.0.1', '127.0.0.2', '168.254.')
?>


Puis un fichier compteur.php avec dedans :

Code:

<?php
/********************************
* ----------------         *
* | compteur.php |         *
* ----------------         *
* 07/04/06               *
* 3in1Compteur - version 0.1b   *
*                     *
* Site officiel :            *
* http://www.notoon.com      *
* =============================   *
*    (c) 2006 NotoOn         *
*    Tous droits réservés      *
********************************/


/***********************************
* Récupération de la configuration *
***********************************/

// Chemin absolu vers le fichier config.inc.php
$chemin = __FILE__;
$chemin = str_replace('compteur.php', '', $chemin);

// On vérifie que le fichier config.inc.php existe bien
if (!file_exists($chemin . 'config.inc.php')) {
   echo 'Le fichier config.inc.php manque à l\'appel !';
} else {
   require_once($chemin . 'config.inc.php');

   // Connexion à la base de données
   $base = @mysql_connect($base_serveur, $base_utilisateur, $base_mdp)  or die('Erreur de connexion :' . mysql_error());
   @mysql_select_db($base_nom, $base) or die('Erreur de sélection :' . mysql_error());


   /***********************
   * Traitement des dates *
   ***********************/

   // On stocke dans $maintenant la date courante
   $jour = date('j');
   $mois = date('n');
   $annee = date('Y');
   $aujourdhui = mktime(0, 0, 0, $mois, $jour, $annee);   // date d'aujourd'hui à minuit au format timestamp
   $maintenant = time(); // date de l'instant présent au format timestamp


   /***************************
   * Vérifications préalables *
   ***************************/

   // On vérifie si on a dépassé le nombre de jours pendant lesquels les IP sont conservées
   $requete = "SELECT * FROM $base_table WHERE ip = 'reference'";
   $resultat = mysql_query($requete);
   $data = mysql_fetch_assoc($resultat);

   // On stocke dans $total le nombre de visites total
   $total = $data['total'];

   // On récupère la dernière date à laquelle les IP ont été effacées
   $ip_suppr = $data['prem_visite'];

   // Si la durée de conservation des IP est dépassée
   if ( ($maintenant-$ip_suppr) > ($garder_ip*24*60*60) ) {
      // On vide tout sauf la première ligne de référence
      $requete = "DELETE FROM $base_table WHERE ip != 'reference'";
      $resultat = mysql_query($requete) or die('Impossible de supprimer les IP' . mysql_error());
      // Et on remplace la date de référence par la date d'aujourd'hui à minuit
      $requete = "UPDATE $base_table SET prem_visite = '$aujourdhui' WHERE ip = 'reference'";   // On met la clause WHERE au cas où les IP n'ont pas pu être effacées
      $resultat = mysql_query($requete) or die('Impossible de changer la date de référence' . mysql_error());
   }

   // On récupère la date du dernier jour stocké dans la base
   $date_stockee = $data['la_date'];

   // Si on a changé de jour, on remet le nombre de visites quotidiennes à 0
   if ( ($aujourdhui != $date_stockee) ) {
      // Le nombre de visites de chaque visiteur de la base est remis à 0
      $requete = "UPDATE $base_table SET total = '0' WHERE ip != 'reference'";
      $resultat = mysql_query($requete);
      // La date stockée est mise à jour à la date d'aujourd'hui
      $requete = "UPDATE $base_table SET la_date = '$aujourdhui' WHERE ip = 'reference'";
      $resultat = mysql_query($requete);
   }


   /**********************************
   * Fonction de vérification des IP *
   **********************************/

   // On définit une fonction qui vérifie si l'IP ext exclue du comptage ou pas
   function verif_ip($valeur, $tableau) {
      $i = 0;
      while ($i < count($tableau)) {
         $resultatultat = strpos($valeur, $tableau[$i]);
         if ($resultatultat === false) {
            $i++;
         } elseif (strpos($valeur, $tableau[$i]) == 0) {
            return true;
         } else {
            $i++;
         }
      }
      return false;
   }


   /*************************
   * Traitement des visites *
   *************************/

   // Récupération de l'adresse IP du visiteur dans $ip
   if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
      $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
   } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
      $ip  = $_SERVER['HTTP_CLIENT_IP'];
   } else {
      $ip = $_SERVER['REMOTE_ADDR'];
   }

   // Et du host correspondant à cette IP
   $hostname = gethostbyaddr($ip);

   // Si l'IP n'est pas dans la liste de celles à exclure
   if ( verif_ip($ip, $exclure_ip) != true) {
      // On compte le nombre d'entrées correspondant à l'IP de notre visiteur
      $resultat = mysql_query("SELECT count(*) FROM $base_table WHERE ip='$ip'");
      $ip_connue = mysql_result($resultat, 0, 0);

      // Si aucune IP ne correspond, le visiteur est donc nouveau dans la base de données
      if ($ip_connue == 0) {
            // Alors on ajoute son heure de connexion, son IP, et on initialise son nombre de visites à 1
            $requete = "INSERT INTO $base_table (prem_visite, la_date, total, ip, hostname) VALUES ('$maintenant', '$maintenant', 1, '$ip', '$hostname')";
            $resultat = mysql_query($requete);
            // Et on incrémente le nombre de visiteurs
            $total++;
            $requete = "UPDATE $base_table SET total = '$total' WHERE ip = 'reference'";
            $resultat = mysql_query($requete);
      }
      /*
      Sinon le visiteur est déjà dans la base, alors :
      - soit il est déjà venu dans la même période d'unicité d'un visiteur
      - soit la période est dépassée, alors le visiteur est considéré comme nouveau
      */
      else {
         // On récupère toutes les données qui lui correspondent
         $requete = "SELECT * FROM $base_table WHERE ip = '$ip'";
         $resultat = mysql_query($requete);
         $data = mysql_fetch_assoc($resultat);

         // On récupère la date de ses première et dernière visites
         $prem_visite = $data['prem_visite'];
         $der_visite = $data['la_date'];

         // Si la période est dépassée
         if ( ($maintenant - $prem_visite) > ($periode*60*60) ) {
            // Incrémentation du compteur total
            $total++;
            $requete = "UPDATE $base_table SET total = '$total' WHERE ip = 'reference'";
            $resultat = mysql_query($requete);
            // On compte le visiteur comme nouveau, même si c'est dans la même journée
            $nb_visites = $data['total'] + 1;
            $requete = "UPDATE $base_table SET prem_visite = '$maintenant' , la_date = '$maintenant', total = $nb_visites WHERE ip = '$ip'";
            $resultat = mysql_query($requete);
         }
         // Sinon on est dans la même période d'unicité
         else {
            // On met uniquement à jour l'heure de son dernier passage
            $requete = "UPDATE $base_table SET la_date = '$maintenant' WHERE ip = '$ip'";
            $resultat = mysql_query($requete);
         }
      }
   }

   /***********************
   * Stockage des données *
   ***********************/

   // Nombre de visites total
   $requete = "SELECT total FROM $base_table WHERE ip = 'reference'";
   $resultat = mysql_query($requete);
   $v_total = mysql_fetch_row($resultat);
   $v_total = $v_total[0];

   // Nombres de visiteurs quotidiens
   $requete = "SELECT sum(total) FROM $base_table WHERE ip != 'reference'";
   $resultat = mysql_query($requete);
   $v_auj = mysql_result($resultat, 0, 0);

   // Nombre de visiteurs en ligne
   $en_ligne = $maintenant - ($intervalle*60);
   $requete = "SELECT count(*) FROM $base_table WHERE (ip != 'reference') AND (la_date >= '$en_ligne')";
   $resultat = mysql_query($requete);
   $v_connecte = mysql_result($resultat, 0, 0);

   // On ferme la connexion à la base de données
   mysql_close();
}
?>

Et enfin tu place ce code là où tu le désire sur ta page :

Code:

<?php
include('compteur.php');
echo '<!-- 3en1 compteur : www.notoon.com -->';
echo "Visiteurs : $v_total<br />";
echo "Aujourd'hui : $v_auj<br />";
echo "En ligne : $v_connecte";
?>

Voilà PHP
Revenir en haut Aller en bas
http://www.valentinpictures.0fees.net/
bobzippo
PAT.PENDING
PAT.PENDING
bobzippo


Nombre de messages : 4413
Age : 73
Localisation : Ile de France
Date d'inscription : 07/10/2005

Gestion des compteurs de visite sur site web Empty
MessageSujet: Re: Gestion des compteurs de visite sur site web   Gestion des compteurs de visite sur site web EmptyMer 13 Sep 2006 - 9:08

Merci M@nson,

Entre temps, zippomaniac m'a passé les coordonnées de celui qu'il utilise.
Il est bien fait avec une gestion des visites par pays, système, affichage et langue du visiteur.
J'ai enfin la vrai fréquentation de mon site. 243 connections alors que mon compteur n'en trouve que 10.
J'ai ajouté un compteur invisible sur toutes les pages, mais de ce fait, le changement de page n'est plus fluide, il y a un trou noir entre chaque page.

Cdt, Robert
Revenir en haut Aller en bas
http://vietnam.zippo.free.fr
Contenu sponsorisé





Gestion des compteurs de visite sur site web Empty
MessageSujet: Re: Gestion des compteurs de visite sur site web   Gestion des compteurs de visite sur site web Empty

Revenir en haut Aller en bas
 
Gestion des compteurs de visite sur site web
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» site japonais/site francais
» Visite à la maison.
» Site Web
» Collection de Florian (MàJ 07/09/14)
» Visite usine Zippo

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
zippo collection :: Divers :: Rien avoir avec le reste-
Sauter vers: