IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Mon gestionnaire de statistiques enregistre des drôles de fichiers


Sujet :

Langage PHP

  1. #1
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut Mon gestionnaire de statistiques enregistre des drôles de fichiers
    Bonjour,

    J'ai crée un script qui m'enregistre quelques infos à des fins statistiques, essentiellement pages vues à chaque passage et pages vues par combien de personnes (même si plusieurs passages)...

    En allant voir ces enregistrements dans la base de données, je constate qu'il y a des enregistrements étranges : notamment un fichier " /favicon.ico ".

    Le plus étrange c'est qu'il y a plusieurs enregistrement pour une seule personne (à la même seconde, même adresse ip...) et toujours de la même manière :

    1) enregistrement de "/index.php" avec un identifiant de session,

    2) puis enregistrement de "/favicon.ico" avec un identifiant de session différent,

    3) réenregistrement de "/favicon.ico" avec encore un autre identifiant de session, c'est alors ce dernier identifiant de session qui est utilisé pour la navigation des autres pages...

    Il en est de même avec un fichier image (qui à ce moment là n'existait pas sur le serveur, un oubli de ma part de mettre l'image sur le serveur) mais sans changement d'identifiant de session.


    Ca me gêne beaucoup car ça me fausse toutes mes stats, notamment le nombre de visiteurs (vu qu'il me met trois identifiants de session pour une page)...

    Il semblerais que je sois le seul à produire ce genre de souci quand j'utilise IE 7 et FF2 (testé sur 2 ordis différents pour ce dernier avec les même soucis)... Par contre il semblerait (je n'en suis pas sur) que les visiteurs extérieurs ayant IE7 ne font pas ce problème.

    En ce qui concerne favicon.ico je me suis dit que ça pouvait venir du fait que j'utilisais un favori (voire même un favori dans la barre personnelle) j'ai donc supprimé et recrée sans résultat positif.

    Et puis hier soir le ponpon : après une erreur dans la connexion à ma base de données, j'ai des messages d'erreurs qui sont recensés grâce à mon script d'erreurs (qui se trouve au début de l'include). Et il m'indique dans la variable recensant l'adresse url, que c'est /favicon.ico...


    Ce que je ne comprends pas c'est que le script des stats ne s'affiche que dans une page (avec un include) alors comment peut il déclencher son exécution avec un fichier .ico ou une image...

    Voici l'ensemble du contenu de mon include :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
    session_start();
     
     
    //				GESTION DES ERREURS				
    error_reporting(0);
     
    function erreurs($mesg) {
        $dte = date('d-m-Y H:i:s');
        $adr_url = $_SERVER['REQUEST_URI'];
        $nbre = substr_count($adr_url, '/');
    	if ((substr_count($adr_url, '/archives/')) > 0 ) {
    		if ($nbre == 2) {
    		    $fichier = "../pgs/admin/erreurs.txt";
    		} else if ($nbre == 3) {
    		    $fichier = "../../pgs/admin/erreurs.txt";
    		} else if ($nbre == 4) {
    		    $fichier = "../../../pgs/admin/erreurs.txt";
    		} else if ($nbre == 5) {
    		    $fichier = "../../../../pgs/admin/erreurs.txt";
    		} else if ($nbre == 6) {
    		    $fichier = "../../../../../pgs/admin/erreurs.txt";
    		} else if ($nbre == 7) {
    		    $fichier = "../../../../../../pgs/admin/erreurs.txt";
    		}
    	} else {
    		if ($nbre == 1) {
    		    $fichier = "pgs/admin/erreurs.txt";
    		} else if ($nbre == 2) {
    		    $fichier = "stats/erreurs.txt";
    		} else if ($nbre == 3) {
    		    $fichier = "../admin/erreurs.txt";
    		} else if ($nbre == 4) {
    		    $fichier = "../../admin/erreurs.txt";
    		} else if ($nbre == 5) {
    		    $fichier = "../../../admin/erreurs.txt";
    		} else if ($nbre == 6) {
    		    $fichier = "../../../../admin/erreurs.txt";
    		} else if ($nbre == 7) {
    		    $fichier = "../../../../../admin/erreurs.txt";
    		}
    	}
        $aajouter = "$dte - $adr_url - $mesg\n";
        $ouvrir = fopen($fichier, "a");
        fwrite($ouvrir, $aajouter);
        fclose($ouvrir);
    }
    //			Fin gestion erreurs			
     
     
    //				PAS DE STATS SI JE VISITE LE SITE			
    if (!isset($_COOKIE['administrateur'])) {
     
    //					VARIABLES					
    	$id = md5(uniqid(rand(), true));
    	if (empty($_SESSION['id_unique'])) {
    	    $_SESSION['id_unique'] = $id;
    	    $id_session = $id;
    	} else {
    	    $id_session = $_SESSION['id_unique'];
    	}
     
    	$url = $_SERVER['REQUEST_URI'];
    	$longchain = strcspn ($url, "?");
    	$adresse_page = substr ($url, 0, $longchain);
     
    	$ip = $_SERVER["REMOTE_ADDR"];
    	$date = date('Y-m-d H:i:s');
     
    	if (!empty($_SERVER['HTTP_REFERER'])) {
    	    $pge_preced = $_SERVER['HTTP_REFERER'];
    	} else {
    	    $pge_preced = 'Cest la première page que visite cet utilisateur';
    	}
     
    	if (!empty($_SERVER['HTTP_USER_AGENT'])) {
    	    $navi = $_SERVER['HTTP_USER_AGENT'];
    	} else {
    	    $navi = 'Une erreur est survenue';
    	}
     
     
    include 'infos.connexion.mysql.include.php';
     
    	$connect = mysql_connect($hote, $user, $mdp_bdd)		or erreurs($mesg = "Impossible de se connecter au Serveur MySql");
    	mysql_select_db("$base") 					or erreurs($mesg = "Impossible de se connecter à la base de données : $base");
     
    //							NOMBRE DE VISITES TOTALES PAR PAGE										
     
    //	POUR        VOIR        SI           LA         PAGE         EXISTE
    	$requete_verif_adr_page = "SELECT adresse_page FROM sess_nb_visites_tot WHERE adresse_page='$adresse_page'";
    	$result_verif_adr_page = mysql_query($requete_verif_adr_page) or erreurs($mesg = "Erreur sur la requête 'requete_verif_adr_page'");
     
    	while ($ligne_result_verif_adr_page = mysql_fetch_assoc($result_verif_adr_page)) {
    	    $val_result_verif_adr_page = $ligne_result_verif_adr_page;
    	}
     
    	if (empty($val_result_verif_adr_page)) {
    //	POUR        CREER        L'ADRESSE         DE         LA           PAGE           SI        ELLE         N'EXISTE          PAS
    		$requete_cree_adr_page = "INSERT INTO sess_nb_visites_tot(adresse_page, nbre_visites) VALUES ('$adresse_page','1')";
    		$result_cree_adr_page = mysql_query($requete_cree_adr_page) or erreurs($mesg = "Erreur sur la requête 'requete_cree_adr_page'");
    	} else {
    //	SI          L'ADRESSE         DE         LA           PAGE         EXISTE           ON          RECUPERE           LE          CHIFFRE                ET           L'INCREMENTE
    		$requete_inc_rech_info = "SELECT nbre_visites FROM sess_nb_visites_tot WHERE adresse_page='$adresse_page'";
    		$result_inc_rech_info = mysql_query($requete_inc_rech_info) or erreurs($mesg = "Erreur sur la requête 'requete_inc_rech_info'");
     
    		while ($ligne_result_inc_rech_info = mysql_fetch_assoc($result_inc_rech_info)) {
    		    foreach ($ligne_result_inc_rech_info as $valeur_result_inc_rech_info) {
    			$vus = $valeur_result_inc_rech_info;
    			$vus++;
     
    //	ON              REECRIT             LE           CHIFFRE               DANS              LA            BDR
    			$requete_inc_maj = "UPDATE sess_nb_visites_tot SET nbre_visites='$vus' WHERE adresse_page='$adresse_page'";
    			$result_inc_maj = mysql_query($requete_inc_maj) or erreurs($mesg = "Erreur sur la requête 'requete_inc_maj'");
    		    }
    		}
    	}
     
     
    //							NOMBRE DE VISITES UNIQUES PAR PAGE										
     
    //	ON        VOIT        SI           L'IDENTIFIANT        DE         SESSION         EXISTE
    	$requete_verif_id_sess = "SELECT id_session FROM sess_nb_visites_uniques WHERE id_session='$id_session' AND adresse_visite='$adresse_page'";
    	$result_verif_id_sess = mysql_query($requete_verif_id_sess) or erreurs($mesg = "Erreur sur la requête 'requete_verif_id_sess'");
     
    	while ($ligne_result_verif_id_sess = mysql_fetch_assoc($result_verif_id_sess)) {
    	    foreach ($ligne_result_verif_id_sess as $valeur_result_verif_id_sess) {
    	    }
    	}
     
    	if (empty($valeur_result_verif_id_sess)) {
    //	ON        CREE        L'IDENTIFIANT        DE         SESSION        S'IL         N'EXISTE          PAS
    		$requete_cree_id_sess = "INSERT INTO sess_nb_visites_uniques(adresse_visite, id_session, adresse_ip, date_creation_ip, pge_preced) VALUES ('$adresse_page','$id_session','$ip','$date','$pge_preced')";
    		$result_cree_id_sess = mysql_query($requete_cree_id_sess) or erreurs($mesg = "Erreur sur la requête 'requete_cree_id_sess'");
     
    //	 ON          RECUPERE           LE          CHIFFRE                ET           L'INCREMENTE
    		$requete_inc_rech_info_uniq = "SELECT nbre_visites_uniq FROM sess_nb_visites_tot WHERE adresse_page='$adresse_page'";
    		$result_inc_rech_info_uniq = mysql_query($requete_inc_rech_info_uniq) or erreurs($mesg = "Erreur sur la requête 'requete_inc_rech_info_uniq'");
     
    		while ($ligne_result_inc_rech_info_uniq = mysql_fetch_assoc($result_inc_rech_info_uniq)) {
    		    foreach ($ligne_result_inc_rech_info_uniq as $valeur_result_inc_rech_info_uniq) {
    			$vus_uniq = $valeur_result_inc_rech_info_uniq;
    			$vus_uniq++;
     
    //	ON              REECRIT             LE           CHIFFRE               DANS              LA            BDR
    			$requete_inc_maj_uniq = "UPDATE sess_nb_visites_tot SET nbre_visites_uniq='$vus_uniq' WHERE adresse_page='$adresse_page'";
    			$result_inc_maj_uniq = mysql_query($requete_inc_maj_uniq) or erreurs($mesg = "Erreur sur la requête 'requete_inc_maj_uniq'");
    		    }
    		}
    	}
     
     
    //							SCRIPT POUR REMPLIR LE TABLEAU LISTANT LES ID DE SESSION								
     
    //	ON        VOIT        SI           L'ID      DE      SESSION       EXISTE
    	$requete_verif_id_sess_uniq = "SELECT id_session FROM sess_id_sessions WHERE id_session='$id_session'";
    	$result_verif_id_sess_uniq = mysql_query($requete_verif_id_sess_uniq) or erreurs($mesg = "Erreur sur la requête 'requete_verif_id_sess_uniq'");
     
    	while ($ligne_result_verif_id_sess_uniq = mysql_fetch_assoc($result_verif_id_sess_uniq)) {
    	    foreach ($ligne_result_verif_id_sess_uniq as $valeur_result_verif_id_sess_uniq) {
    	    }
    	}
     
    	if (empty($valeur_result_verif_id_sess_uniq)) {
    //	ON        CREE        L'ID       DE          SESSION        SI        ELLE         N'EXISTE          PAS
    		$requete_cree_id_sess_uniq = "INSERT INTO sess_id_sessions(id_session, adresse_ip, date_creation, navigateur) VALUES ('$id_session','$ip','$date','$navi')";
    		$result_cree_id_sess_uniq = mysql_query($requete_cree_id_sess_uniq) or erreurs($mesg = "Erreur sur la requête 'requete_cree_id_sess_uniq'");
    	}
     
    	mysql_close($connect);
     
    }
    ?>
    Avez vous une idée d'où viens le problème ?

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 435
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 435
    Points : 15 809
    Points
    15 809
    Par défaut
    tu utilises peut-être ce script sur la page qui s'affiche quand il y a une erreur 404 ?

  3. #3
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Tout à fait, d'ailleurs ça allait être ma prochaine question dans les jours ou semaines dès que j'aurais eu le temps...

    Car en effet ce script s'execute aussi sur ma page d'erreurs 404 et j'ai déjà constaté qu'elle n'est jamais indiquée dans mes stats...

    Le problème viendrait-il de là ?? si oui comment le régler...

    Merci

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 435
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 435
    Points : 15 809
    Points
    15 809
    Par défaut
    Citation Envoyé par 12monkeys Voir le message
    Le problème viendrait-il de là ?? si oui comment le régler...
    pour ça il ne faut plus que tu enregistres les statistiques s'il s'agit d'une erreur 404
    pour tester ça, regarde dans $_SERVER il y a une valeur qui indique le code d'erreur de la page en cours

  5. #5
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Désolé,

    je n'ai pas trouvé dans $_SERVER , j'ai cherché ici : http://www.php.net/manual/fr/reserve...riables.server

    Aurais-je le même résultat si j'enlève les includes vers le script de mes stats dans le fichier 404.php ?

  6. #6
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 435
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 435
    Points : 15 809
    Points
    15 809
    Par défaut
    Citation Envoyé par 12monkeys Voir le message
    je n'ai pas trouvé dans $_SERVER , j'ai cherché ici : http://www.php.net/manual/fr/reserve...riables.server
    tu peux voir le contenu avec la fonction "print_r", le code est dans $_SERVER['REDIRECT_STATUS']

    Citation Envoyé par 12monkeys Voir le message
    Aurais-je le même résultat si j'enlève les includes vers le script de mes stats dans le fichier 404.php ?
    oui, c'est un peu plus simple que ma proposition

  7. #7
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Ok merci de ton aide, je vais tester ça...

  8. #8
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Bon ben j'ai enlevé les includes vers le script de mes stats dans le fichier 404.php et après un essai sur chaque navigateur, ça semble fonctionner a priori...

    Mais ça m'embête !! Je ne peux alors plus utiliser ce script pour voir combien de fois la page d'erreurs est affichée...

    Y a t'il une autre solution, comment feriez (ou faites) vous ?

    Merci...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/03/2011, 19h52
  2. Plus accès à mon gestionnaire des tâches Windows XP
    Par Lostt dans le forum Windows XP
    Réponses: 12
    Dernier message: 23/02/2011, 00h43
  3. [MySQL] Enregistrer des noms de fichiers en base sql
    Par Ella68 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/01/2010, 17h59
  4. mon Gestionnaire des tâches est désactivé
    Par mimi_01 dans le forum Windows XP
    Réponses: 8
    Dernier message: 20/03/2009, 20h09
  5. Réponses: 3
    Dernier message: 08/03/2008, 00h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo