Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/10/2007, 13h57   #1
Rédacteur/Modérateur
 
Avatar de 12monkeys
 
Homme Dr. Peters
Webmaster
Inscription : novembre 2006
Messages : 3 630
Détails du profil
Informations personnelles :
Nom : Homme Dr. Peters
Âge : 35
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Webmaster
Secteur : Service public

Informations forums :
Inscription : novembre 2006
Messages : 3 630
Points : 6 232
Points : 6 232
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 :
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 ?
__________________
Vous débutez dans la creation de sites web : les bases du html et débuter avec les CSS
Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
Votez pour les messages qui vous ont aidés...
12monkeys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2007, 14h24   #2
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
tu utilises peut-être ce script sur la page qui s'affiche quand il y a une erreur 404 ?
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2007, 15h21   #3
Rédacteur/Modérateur
 
Avatar de 12monkeys
 
Homme Dr. Peters
Webmaster
Inscription : novembre 2006
Messages : 3 630
Détails du profil
Informations personnelles :
Nom : Homme Dr. Peters
Âge : 35
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Webmaster
Secteur : Service public

Informations forums :
Inscription : novembre 2006
Messages : 3 630
Points : 6 232
Points : 6 232
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
__________________
Vous débutez dans la creation de sites web : les bases du html et débuter avec les CSS
Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
Votez pour les messages qui vous ont aidés...
12monkeys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2007, 15h46   #4
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
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
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2007, 21h50   #5
Rédacteur/Modérateur
 
Avatar de 12monkeys
 
Homme Dr. Peters
Webmaster
Inscription : novembre 2006
Messages : 3 630
Détails du profil
Informations personnelles :
Nom : Homme Dr. Peters
Âge : 35
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Webmaster
Secteur : Service public

Informations forums :
Inscription : novembre 2006
Messages : 3 630
Points : 6 232
Points : 6 232
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 ?
__________________
Vous débutez dans la creation de sites web : les bases du html et débuter avec les CSS
Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
Votez pour les messages qui vous ont aidés...
12monkeys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2007, 22h31   #6
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
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
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 13h07   #7
Rédacteur/Modérateur
 
Avatar de 12monkeys
 
Homme Dr. Peters
Webmaster
Inscription : novembre 2006
Messages : 3 630
Détails du profil
Informations personnelles :
Nom : Homme Dr. Peters
Âge : 35
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Webmaster
Secteur : Service public

Informations forums :
Inscription : novembre 2006
Messages : 3 630
Points : 6 232
Points : 6 232
Ok merci de ton aide, je vais tester ça...
__________________
Vous débutez dans la creation de sites web : les bases du html et débuter avec les CSS
Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
Votez pour les messages qui vous ont aidés...
12monkeys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 18h36   #8
Rédacteur/Modérateur
 
Avatar de 12monkeys
 
Homme Dr. Peters
Webmaster
Inscription : novembre 2006
Messages : 3 630
Détails du profil
Informations personnelles :
Nom : Homme Dr. Peters
Âge : 35
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Webmaster
Secteur : Service public

Informations forums :
Inscription : novembre 2006
Messages : 3 630
Points : 6 232
Points : 6 232
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...
__________________
Vous débutez dans la creation de sites web : les bases du html et débuter avec les CSS
Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
Votez pour les messages qui vous ont aidés...
12monkeys est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h03.


 
 
 
 
Partenaires

Hébergement Web