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 :

Compteur de visiteur unique qui incrémente trop


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 12
    Par défaut Compteur de visiteur unique qui incrémente trop
    Bonjour,

    Pour m'exercer j'ai crée un compteur de visiteur unique qui se base sur l’adresse IP.

    Ce dernier enregistre dans $IP la valeur de $_SERVER['REMOTE_ADDR'] pour ensuite chercher la valeur dans le fichier IP_visiteur.txt. Si ce dernier n'est pas présent alors le fichier compteur.txt est crée s'il n'existe pas et dans tout les cas sa valeur est incrémenté de 1. Ensuite la valeur d'$IP va s'enregistrer sur une ligne dans IP_visiteur.txt.
    Sinon (il y a l'IP dans IP_visiteur.txt) le fichier compteur.txt est juste lu pour pouvoir dans tout les cas afficher une phrase avec ce nombre dans un echo.

    Cependant je rencontre un problème, si je visite une fois la page j'ai bien 1 visiteur, les fichiers compteur.txt et IP_visiteur.txt sont bien crée s'ils n'existent pas et là où est le problème c'est qu'à la deuxième visite le fichier compteur.txt au lieu d'avoir comme valeur 2 (pour la seconde visite) il aura 12, puis 1212 après X refresh (mais pas assez pour avoir normalement cette valeur).

    Je suppose donc que mon code a un problème de sémantique, mais où ? Le voici :

    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
    // Écrit l'IP du visiteur dans un fichier texte pour vérifier si visite unique
    //
    // Ouverture du fichier IP_visiteur.txt en lecture et en écriture, création si inexistant
    $readIP = fopen ("IP_visiteur.txt", "a+");
    // Lecture du contenue de $readIP avec fgets et écriture dans variable $visitIP
    $visitIP = fgets ($readIP); // Rajouter nombre si ne fonctionne pas, voir ci-dessous
    $IP = $_SERVER['REMOTE_ADDR'];
     
    if(stristr($visitIP, $IP) == FALSE) {
            $fp3 = fopen ("compteur.txt", "a+");
            $visitNum = fgets ($fp3, 11);
            $visitNum = $visitNum + 1;
            fseek ($fp3, 0);
            fputs ($fp3, $visitNum);
            // Écriture de l'IP dans IP_visiteur.txt
            fputs ($readIP, $IP);
            fputs ($readIP, "\n");
            fclose($fp3);
            }
    else {
            $fp3 = fopen ("compteur.txt", "r");
            $visitNum = fgets ($fp3, 11);
            fclose ($fp3);
            }
     
    echo 'Votre addresse IP est ' .$IP. ' et il y a eu ' .$visitNum. ' visiteur(s) unique(s).';
    Une idée ?

    Cordialement, Koshie

  2. #2
    Invité de passage
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1
    Par défaut


    if(stristr($visitIP, $IP) == FALSE) {
    $fp3 = fopen ("compteur.txt", "a+");
    $visitNum = fgets ($fp3, 11);
    $visitNum = $visitNum + 1;
    fseek ($fp3, 0);
    fputs ($fp3, $visitNum);
    // Écriture de l'IP dans IP_visiteur.txt
    fputs ($readIP, $IP);
    fputs ($readIP, "\n");
    fclose($fp3);
    }
    else {
    $fp3 = fopen ("compteur.txt", "r");
    $visitNum = fgets ($fp3, 11);
    fclose ($fp3);
    }
    Cher koshie je ne suis pas professionnel en php mais je pense que ton erreur est dans cette ligne : $fp3 = fopen ("compteur.txt", "a+"); car "a+" c'est pour écrire des caractères à la suite de la chaine éxistante donc il n'efface pas le résultat précédent. Le code que je te propose pour le même genre d'action :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    $leFichier = fopen('compteur.txt', 'r+');
     
    $nb_vues = fgets($leFichier); // je lis la première ligne
    $nb_vues++; // j'augmente de 1 le nombre de vues
    fseek($leFichier, 0); // je remes le curseur au début du fichier
    fputs($leFichier, $nb_vues); // j'écris le nouveau nombre de vues
     
    fclose($leFichier);
    ?>
    Voila j'espére t'avoir aidé.

Discussions similaires

  1. [Débutant] Compteur , qui incrémente et sauvegarde la dernière valeur
    Par Kagami dans le forum C#
    Réponses: 3
    Dernier message: 30/01/2012, 16h25
  2. Bouton compteur visiteur unique
    Par wearelegion dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 21/11/2011, 19h51
  3. compteur à rebours de visiteur unique
    Par math8811 dans le forum Langage
    Réponses: 4
    Dernier message: 16/06/2008, 14h22
  4. Modification Compteur de Visiteur en PHP (Ajout D'Url)
    Par thefutureisnow dans le forum Langage
    Réponses: 4
    Dernier message: 11/03/2006, 20h16
  5. Réponses: 15
    Dernier message: 15/01/2006, 21h02

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