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 :

Modification Compteur de Visiteur en PHP (Ajout D'Url)


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Points : 61
    Points
    61
    Par défaut Modification Compteur de Visiteur en PHP (Ajout D'Url)
    Salut à tous !

    Je suis en train d'essayer de modifier le code de mon script de visiteurs connectés sur mon site ... le script est disponible ici (ca pourrait servir à d'autres):

    http://membres.lycos.fr/tontonactarus/compteur.rar

    il fonctionne de cette manière :

    la page compteur.php (qui permet d'afficher les connectés) appel la page compte-live.php qui permet de trainer l'ip du visiteur et les ip déja enregistré avec un timestamp dans le fichier txt : compteur-live.txt

    A chaque fois qu'un visiteur se connecte à une page, le script vérifi les timestamp et les ip, si le timestamp dépasse 10 minutes, celui ci et l'ip rataché sont supprimés.

    Pour l'instant comme vous pouvez le constater seul le nombre de connecté est affiché et les ip si on le souhaite (ce qui n'est pas trop conseillé quand même ^^) ... je souhaiterais rajouter l'url qu'à consulté le visiteur en se connectant, ajouter une ligne dans le fichier txt (en plus de l'ip et du timestamp) comportant l'url à l'aide de cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function url_actuelle()
    {
         return "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
    }
     
    echo url_actuelle();
    Après mes multiples essais je n'arrive que à traiter 1 visiteur (moi ) ... dès que cela passe à 2 visiteurs, dans le fichier txt j'obtient des lignes completement désordonnés ...

    Si quelqu'un pouvait me donner un coup de pouce pour l'améliorer, je suis persuadé que ce petit script servirait à bon nombre de webmaster

    Merci d'avance

  2. #2
    Membre averti Avatar de piff62
    Inscrit en
    Décembre 2003
    Messages
    431
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Décembre 2003
    Messages : 431
    Points : 417
    Points
    417
    Par défaut
    Après mes multiples essais je n'arrive que à traiter 1 visiteur (moi Very Happy ) ... dès que cela passe à 2 visiteurs, dans le fichier txt j'obtient des lignes completement désordonnés ...
    Certes je veux bien .. mais pourrait tu nous montrer quelle "tete" a ton fichier ?
    Ca pourrait nous aider

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    Salut,

    Voila ce que j'ai fais jusqu'a présent, ca fonctionne pour 1 seul visiteur le fichier txt donne ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    http://XXXXX
    1142079851
    81.48.148.XXX

    Dès que je dépassé 1 visiteur les lignes sont completement désordonnés (2 url 1 time stamp 1 url 1 ip ...)

    Voila les modifications que j'ai effectué sur les 2 fichiers PHP :

    Compteur.php :

    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
     
    <?php
    include ("compteur-live/compteur-live.php");
    ?>
     
    <?php
    // Affichage des adresses IP des visiteurs connectés:
    // ================================
    // Ce script lit le fichier /compteur-live/compteur-live.txt, dans lequel sont
    // identifiés les visiteurs connectés sur le site.
    // -----------------------------------------------------------------------------------
    // Le fichier /compteur-live/compteur-live.txt est créé et mis à jour par le "compteur
    // live" présenté à http://www.lesite.com/script-php--visiteurs-connectes.php.
    // Ce script nécessite donc l'installation préalable du "compteur live".
    // -----------------------------------------------------------------------------------
    // On lit chaque ligne du fichier /compteur-live/compteur-live.txt dans le tableau
    // $compteur_live pour pouvoir afficher les adresses IP des visiteurs.
    $compteur_live = file("compteur-live.txt");
    // -----------------------------------------------------------------------------------
    // Le fichier /compteur-live/compteur-live.txt contient 2 lignes par visiteur connecté:
    // - une ligne contenant son heure de connexion,
    // - suivie d'une ligne contenant son adresse IP.
    // Le nombre de visiteurs connecté est donc la moitié du nombre de lignes du fichier.
    $nb_de_visiteurs = count($compteur_live)/3;
    // -----------------------------------------------------------------------------------
    // On lit l'adresse IP du visiteur qui est en train de charger la page pour pouvoir
    // l'identifier parmi les visiteurs connectés
    if(isset($_SERVER["REMOTE_ADDR"])) { // Si on peut déterminer l'adresse IP
    $ip_en_cours = $_SERVER["REMOTE_ADDR"];
    }
    else { // sinon
    $ip_en_cours = "Non identifiable";
    }
    // -----------------------------------------------------------------------------------
    // On affiche le nombre de visiteurs connectés
    echo "Connecté(s) : ".$nb_de_visiteurs;
    if($nb_de_visiteurs > 1) {
    echo "<font color='#FFFFFF'> visiteurs connectés sur le site. Leurs adresses IP sont:";
    }
    else {
    echo " visiteur connecté sur le site.";
    if($nb_de_visiteurs == 1) {
    echo " Son adresse IP est:";
    }
    }
     
    echo "<br>\n";
    // -----------------------------------------------------------------------------------
    // On affiche les adresses IP de tous les visiteurs
    for($i=0; $i<$nb_de_visiteurs; $i++) {
    echo"- <a href=\"http://www.ripe.net/perl/whois? form_type=simple&full_query_string=&searchtext=".$compteur_live [2*$i+2]."&do_search=Search\" target=\"_blank\" title=\"+ d'infos sur cette adresse IP...\">".$compteur_live[2*$i+2]."</a>";
    echo" A cette URL : <a href='".$compteur_live [2*$i]."'>".$compteur_live [2*$i]."<a>";
     
    // On détermine la présence de robots des moteurs de recherche parmi les visiteurs
    $google1 = strpos($compteur_live[2*$i+2],"216.239.46");
    $google2 = strpos($compteur_live[2*$i+2],"64.68.8");
    $scooter1 = strpos($compteur_live[2*$i+2],"216.39");
    $scooter2 = strpos($compteur_live[2*$i+2],"209.73");
    $slurp = strpos($compteur_live[2*$i+2],"66.196");
    $voila = strpos($compteur_live[2*$i+2],"195.101.94");
    $fast = strpos($compteur_live[2*$i+2],"66.77.73");
    $msn = strpos($compteur_live[2*$i+2],"204.95.98");
    if(($google1 !== false) || ($google2 !== false)) {
    echo" <a href=\"http://www.google.com/bot.html\" target=\"_blank\" title=\"Le robot de Google. + d'infos...\">[Googlebot]</a>";
    }
    elseif(($scooter1 !== false) || ($scooter2 !== false)) {
    echo" <a href=\"http://www.robotstxt.org/wc/active/html/scooter.html\" target=\"_blank\" title=\"Le robot de Altavista. + d'infos...\">[Scooter]</a>";
    }
    elseif($slurp !== false) {
    echo" <a href=\"http://www.inktomi.com/slurp.html\" target=\"_blank\" title=\"Le robot de Inktomi. + d'infos...\">[Slurp]</a>";
    }
    elseif($voila !== false) {
    echo" <a href=\"http://aide.voila.fr/Recherche/?Robots\" target=\"_blank\" title=\"Le robot de Voilà. + d'infos...\">[VoilaBot]</a>";
    }
    elseif($fast !== false) {
    echo" <a href=\"http://fast.no/us/products/fast_web_search/crawler_faq\" target=\"_blank\" title=\"Le robot de Fast. + d'infos...\">[Fast Web Crawler]</a>";
    }
    elseif($msn !== false) {
    echo" <a href=\"http://search.msn.com/msnbot.htm\" target=\"_blank\" title=\"Le robot de MSN. + d'infos...\">[MSNBot]</a>";
    }
    else{}
    // On identifie le visiteur en cours parmi tous les visiteurs connectés
    if($compteur_live[2*$i+2] == $ip_en_cours) {
    echo"(C'est Vous)";
    }
    echo"<br>\n";
    }
    ?>






    compteur-live.php :

    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
     
     
    <?php
    // Compteur instantané (compteur live ou live counter):
    // ==================================
    // Ce script met à jour le fichier /compteur-live/compteur-live.txt, dans lequel sont
    // identifiés les visiteurs connectés sur le site.
    // Il est appelé dans l'entête de toutes les pages du site.
    // -----------------------------------------------------------------------------------
    // Le fichier /compteur-live/compteur-live.txt contient 2 lignes par visiteur connecté:
    // - une ligne contenant son heure de connexion,
    // - suivie d'une ligne contenant son adresse IP.
    // Les visiteurs y sont classés par ordre chronologique:
    // - de celui qui s'est connecté il y a le plus longtemps (en haut de fichier),
    // - à celui qui s'est connecté le plus récemment (en bas de fichier).
    // -----------------------------------------------------------------------------------
    // On lit chaque ligne du fichier /compteur-live/compteur-live.txt
    // dans le tableau $compteur_live
    $compteur_live = file("compteur-live.txt");
    // -----------------------------------------------------------------------------------
    // On détermine quels sont les visiteurs à éliminer
    // (ceux dont la dernière connexion date de plus de 5 minutes).
    $premiere_ligne_a_garder=-3; // valeur virtuelle. Sera 0 au 1er passage dans la boucle...
    do { // On boucle jusqu'à trouver le premier visiteur à ne pas eliminer, ou la fin de fichier.
    $premiere_ligne_a_garder=$premiere_ligne_a_garder+3; // visiteur suivant
    } while((date('U', strtotime('-600 seconds')) > $compteur_live[$premiere_ligne_a_garder]) && ($premiere_ligne_a_garder < count($compteur_live)));
    // 300 secondes = 5 minutes. Cette durée est modifiable.
    // -----------------------------------------------------------------------------------
    // On lit l'adresse IP du visiteur qui est en train de charger une page
    if(isset($_SERVER["REMOTE_ADDR"])) { // Si on peut déterminer l'adresse IP
    $ip_en_cours = $_SERVER["REMOTE_ADDR"];
    }
    else { // sinon
    $ip_en_cours = "Non identifiable";
    }
    // -----------------------------------------------------------------------------------
    // on reconstitue le futur contenu du fichier dans la variable $compteur
    $compteur = "";
     
    // récupération de l'url
    function url_actuelle()
    {
         return "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
    }
     
    if($premiere_ligne_a_garder < count($compteur_live)) { // des visiteurs à ne pas éliminer?
    // Pour tous les visiteurs inscrits dans le fichier à ne pas éliminer...
    for($i=$premiere_ligne_a_garder; $i<count($compteur_live); $i=$i+3) {
    // Garder ce visiteur, sauf si c'est celui qui est en train de recharger
    // une page (ceci afin déviter les doublons).
    if(trim($compteur_live[$i+2]) != $ip_en_cours) {
    $compteur .= url_actuelle()."\n".trim($compteur_live[$i])."\n".trim($compteur_live[$i+2])."\n";
    }
    }
    }
    // -----------------------------------------------------------------------------------
    // Enfin on ajoute le visiteur qui est en train de se connecter
    $compteur .= url_actuelle()."\n".date('U')."\n".$ip_en_cours;
    // -----------------------------------------------------------------------------------
    // Et on écrit le tout dans le fichier
    $pointeur=fopen("compteur-live.txt","w");
    fputs($pointeur,$compteur);
    fclose($pointeur);
    ?>

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    le problème ce situe donc dans le compteur-live.php ... au moment du traitement des lignes ... mais où je vois pas
    Ca doit tenir à pas grand chose

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    C'est bon j'ai fini par réussir, j'ai même ajouté le referer de l'utilisateur en plus ^^
    Comme ca vous loguez le nombre de visiteurs, les ip, où ils sont sur le site et leur provenance et tous ca en live :p


    le compteur-live.php
    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
     
    <?php
    // Compteur instantané (compteur live ou live counter):
    // ==================================
    // Ce script met à jour le fichier /compteur-live/compteur-live.txt, dans lequel sont
    // identifiés les visiteurs connectés sur le site.
    // Il est appelé dans l'entête de toutes les pages du site.
    // -----------------------------------------------------------------------------------
    // Le fichier /compteur-live/compteur-live.txt contient 2 lignes par visiteur connecté:
    // - une ligne contenant son heure de connexion,
    // - suivie d'une ligne contenant son adresse IP.
    // Les visiteurs y sont classés par ordre chronologique:
    // - de celui qui s'est connecté il y a le plus longtemps (en haut de fichier),
    // - à celui qui s'est connecté le plus récemment (en bas de fichier).
    // -----------------------------------------------------------------------------------
    // On lit chaque ligne du fichier /compteur-live/compteur-live.txt
    // dans le tableau $compteur_live
    $compteur_live = file("compteur-live.txt");
    // -----------------------------------------------------------------------------------
    // On détermine quels sont les visiteurs à éliminer
    // (ceux dont la dernière connexion date de plus de 5 minutes).
    $premiere_ligne_a_garder=-4; // valeur virtuelle. Sera 0 au 1er passage dans la boucle...
    do { // On boucle jusqu'à trouver le premier visiteur à ne pas eliminer, ou la fin de fichier.
    $premiere_ligne_a_garder=$premiere_ligne_a_garder+4; // visiteur suivant
    } while((date('U', strtotime('-600 seconds')) > $compteur_live[$premiere_ligne_a_garder]) && ($premiere_ligne_a_garder < count($compteur_live)));
    // 300 secondes = 5 minutes. Cette durée est modifiable.
    // -----------------------------------------------------------------------------------
    // On lit l'adresse IP du visiteur qui est en train de charger une page
    if(isset($_SERVER["REMOTE_ADDR"])) { // Si on peut déterminer l'adresse IP
    $ip_en_cours = $_SERVER["REMOTE_ADDR"];
    }
    else { // sinon
    $ip_en_cours = "Non identifiable";
    }
    // -----------------------------------------------------------------------------------
    // on reconstitue le futur contenu du fichier dans la variable $compteur
    $compteur = "";
     
    // récupération de l'url
    function url_actuelle()
    {
         return "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
    }
     
    //recupération du referer
    function url_referer()
    {
    return $_SERVER['HTTP_REFERER']." ";
    }
     
     
     
    if($premiere_ligne_a_garder < count($compteur_live)) { // des visiteurs à ne pas éliminer?
    // Pour tous les visiteurs inscrits dans le fichier à ne pas éliminer...
    for($i=$premiere_ligne_a_garder; $i<count($compteur_live); $i=$i+4) {
    // Garder ce visiteur, sauf si c'est celui qui est en train de recharger
    // une page (ceci afin déviter les doublons).
    if(trim($compteur_live[$i+1]) != $ip_en_cours) {
    $compteur .= trim($compteur_live[$i])."\n".trim($compteur_live[$i+1])."\n".trim($compteur_live[$i+2])."\n".trim($compteur_live[$i+3])."\n";
    }
    }
    }
    // -----------------------------------------------------------------------------------
    // Enfin on ajoute le visiteur qui est en train de se connecter
    $compteur .= date('U')."\n".$ip_en_cours."\n".url_actuelle()."\n".url_referer();
    // -----------------------------------------------------------------------------------
    // Et on écrit le tout dans le fichier
    $pointeur=fopen("compteur-live.txt","w");
    fputs($pointeur,$compteur);
    fclose($pointeur);
    ?>

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

Discussions similaires

  1. [PHP-JS] Un compteur de visiteurs par mois
    Par frank69 dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2006, 00h01
  2. [PHP] ajout de backslash auto lors d'un ajout en DB
    Par FraktaL dans le forum Langage
    Réponses: 16
    Dernier message: 20/06/2006, 16h00
  3. Réponses: 15
    Dernier message: 15/01/2006, 20h02
  4. [Sécurité] compteur de visites en php
    Par stanley dans le forum Langage
    Réponses: 2
    Dernier message: 23/10/2005, 15h47
  5. Réponses: 2
    Dernier message: 09/05/2003, 17h41

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