par
FredoMkb » 21 oct. 2007, 12:18
Bonjour à tous
Voici mon souci du jour...
Je tente de réaliser un compteur de visites des plus basiques (au fait, il s'agit plutôt d'un compteur de rechargement des pages), qui sauvegarde la valeur du compteur dans un simple fichier texte.
J'ai un souci que je n'arrive pas à résoudre, je m'explique :
Lorsque j'affiche ou recharge la page, pas de problème, le compteur augmente, mais pas de manière "noramale", puisqu'il le fait en ajoutant 2 au lieu de 1
J'ai mis pas mal de "echo" un peu partout pour voir où cette addition empbêttante ce pruduit, mais je n'ai rien trouvé d'anormal, sauf que, en regardant le fichier texte contenant la valeur du compteur, celui-ci contient toujours une valeur additionnée de 2 et non de 1 comme il devrait... bref, je n'y comprends plus rien
Voici le bout de code que j'utilise, en espèrant que qulqu'un pourra me dire où est l'erreur, car là je coince grâve :
<?php
// Fonction qui genere et incremente le compteur
function f_compteur($nom, $incr=1) {
$doc = trim($nom).'.txt'; // Nom du fichier texte
$nbr = f_lire($doc); // Lecture des donnees memorisees
$nbr = $incr + $nbr; // Incrementation du compteur
$ok = f_ecrire($doc, $nbr); // Ecriture de la nouvelle valeur du compteur
if($ok) { return $nbr; } else { return ''; } // Retourne la nouvelle valeur du compteur ou rien
}
// Fonction pour lire le fichier contenant le compteur
function f_lire($thePath) {
$theData = ''; // Initialisation
// Si le fichier existe, alors on lit son contenu et on le concatene pour eviter d'avoir une liste
if (@file_exists($thePath)) { $theData = @implode("", file($thePath)); }
return $theData; // Retourne le resultat
}
// Fonction pour ecrire dans le fichier contenant le compteur
function f_ecrire($thePath, $theData) {
$long = strlen((string)$theData); // Longueur de la chaine pour verification finale
// Creation ou ouverture du fichier en ecriture seule, son eventuel contenu est efface
$fileOpen = @fopen($thePath, "wb");
$res = @fwrite($fileOpen, $theData); // Ecriture des nouvelles valeurs
@fclose($fileOpen); // Fermeture du fichier
return ($res == $long); // Comparaison de la longeur des donnees ecrites avec celles fournies
}
?>
J'apelle ce code par un simple "include" et je lance la fonction par un "echo f_compteur('mon_fichier');"...
Donc, au début, le code retourne bien "1", puis, bizarrement, il retourne "3", "5", "7", etc... pourquoi ?
Merci à tous pour vos lumières

Bonjour à tous :)
Voici mon souci du jour...
Je tente de réaliser un compteur de visites des plus basiques (au fait, il s'agit plutôt d'un compteur de rechargement des pages), qui sauvegarde la valeur du compteur dans un simple fichier texte.
J'ai un souci que je n'arrive pas à résoudre, je m'explique :
Lorsque j'affiche ou recharge la page, pas de problème, le compteur augmente, mais pas de manière "noramale", puisqu'il le fait en ajoutant 2 au lieu de 1 :(
J'ai mis pas mal de "echo" un peu partout pour voir où cette addition empbêttante ce pruduit, mais je n'ai rien trouvé d'anormal, sauf que, en regardant le fichier texte contenant la valeur du compteur, celui-ci contient toujours une valeur additionnée de 2 et non de 1 comme il devrait... bref, je n'y comprends plus rien :(
Voici le bout de code que j'utilise, en espèrant que qulqu'un pourra me dire où est l'erreur, car là je coince grâve :
[php]<?php
// Fonction qui genere et incremente le compteur
function f_compteur($nom, $incr=1) {
$doc = trim($nom).'.txt'; // Nom du fichier texte
$nbr = f_lire($doc); // Lecture des donnees memorisees
$nbr = $incr + $nbr; // Incrementation du compteur
$ok = f_ecrire($doc, $nbr); // Ecriture de la nouvelle valeur du compteur
if($ok) { return $nbr; } else { return ''; } // Retourne la nouvelle valeur du compteur ou rien
}
// Fonction pour lire le fichier contenant le compteur
function f_lire($thePath) {
$theData = ''; // Initialisation
// Si le fichier existe, alors on lit son contenu et on le concatene pour eviter d'avoir une liste
if (@file_exists($thePath)) { $theData = @implode("", file($thePath)); }
return $theData; // Retourne le resultat
}
// Fonction pour ecrire dans le fichier contenant le compteur
function f_ecrire($thePath, $theData) {
$long = strlen((string)$theData); // Longueur de la chaine pour verification finale
// Creation ou ouverture du fichier en ecriture seule, son eventuel contenu est efface
$fileOpen = @fopen($thePath, "wb");
$res = @fwrite($fileOpen, $theData); // Ecriture des nouvelles valeurs
@fclose($fileOpen); // Fermeture du fichier
return ($res == $long); // Comparaison de la longeur des donnees ecrites avec celles fournies
}
?>
[/php]
J'apelle ce code par un simple "include" et je lance la fonction par un "echo f_compteur('mon_fichier');"...
Donc, au début, le code retourne bien "1", puis, bizarrement, il retourne "3", "5", "7", etc... pourquoi ? :shock:
Merci à tous pour vos lumières :)