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

PHP & Base de données Discussion :

[SQL] Qui est en ligne


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    HwRZxLc4
    Invité(e)
    Par défaut [SQL] Qui est en ligne
    Bonsoir,

    J'éssaye d'apliquer un scripte qui compte le nombre de visiteur sur le site, le problème est que il prand l'ip de mon serveur, donc quand on surf avec 3 pc du réseaux sur le site il indique 1 utilisateur et pas 3.

    Voici mon code....

    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
    <?php
    function nb_visiteurs_connecte($time,$filename="data.dat")
    {
    $ip = getenv("REMOTE_ADDR");
    $date=time();
    $i=0;
    $ii=0;
    $bool=0;
    if(file_exists($filename))
    {
    if($fichier=fopen($filename,"r"))
    {
    while(!feof($fichier))
    {
    $ligne=fgets($fichier,4096);
    $tab=explode("|",$ligne);
    if($tab[1]>0)
    {
    $tab_de_tab[$i][0]=$tab[0];
    $tab_de_tab[$i][1]=$tab[1];
    $i++;
    }
    }
    fclose($fichier);
    }
    }
    for($j=0;$j<$i;$j++)
    {
    if(($date-chop($tab_de_tab[$j][1]))>$time)
    {
    }
    else
    {
    $tab_de_tab_actualise[$ii][0]=$tab_de_tab[$j][0];
    $tab_de_tab_actualise[$ii][1]=chop($tab_de_tab[$j][1]);
    $ii++;
    }
    }
    for($j=0;$j<$ii;$j++)
    {
    if($tab_de_tab_actualise[$j][0]==$ip)
    {
    $bool=1;
    }
    }
    if($bool==0)
    {
    $tab_de_tab_actualise[$ii][0]=$ip;
    $tab_de_tab_actualise[$ii][1]=$date;
    $ii++;
    }
    if($fichier=fopen($filename,"w"))
    {
    for($j=0;$j<$ii;$j++)
    {
    fputs($fichier,chop($tab_de_tab_actualise[$j][0]));
    fputs($fichier,"|");
    fputs($fichier,chop($tab_de_tab_actualise[$j][1]));
    fputs($fichier,"\n");
    }
    fclose($fichier);
    }
    echo "<b>",$ii,"</b> visiteurs connectés";
    }
    nb_visiteurs_connecte(300,"data.dat");
    ?>
    Merci pour votre aide.
    Dernière modification par HwRZxLc4 ; 30/04/2006 à 21h09. Motif: Résolu

  2. #2
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Par défaut
    Salut,

    si le test se fait sur un serveur qui se trouve à l'extérieur du réseau où se trouvent les 3 PC en question, et si les 3 PC se trouvent sur le meme réseau local, qui accèdent par la même ligne vers Internet, alors c'est normal car il n'y a qu'une seule IP commune pour les 3 machines.

  3. #3
    HwRZxLc4
    Invité(e)
    Par défaut
    Je sais, mai j'ai déjà vu un script qui tennais compte des pc interne au réseaux, mai je remet pas la main dessus....

  4. #4
    Membre éprouvé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Par défaut
    Je ne trouve pas que ce soit la metthode la plus simple.
    Ce que je fait pour faire ce genre de chose c'est que je crée une table qui enregistre toute les sessions (et qui les effacent si la personne n'a pas raffraichi de page pendant un certain temps).

    Comme ca j'ai le nombre de visiteur en "temps réel" et en plus je me sert de cette table pour les session (j'attribu le nom du membre a chaque session si il sont connecté).

  5. #5
    HwRZxLc4
    Invité(e)
    Par défaut
    Oui mais sa fais des requètes en plus....

    J'ai rajouté sa au début et la sa fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [FONT=Verdana]if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) 
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];  
        elseif(isset($_SERVER['HTTP_CLIENT_IP']))    
        $ip = $_SERVER['HTTP_CLIENT_IP'];    
        else 
        $ip = $_SERVER['REMOTE_ADDR'];   [/FONT]

    et enlevé cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ip = getenv("REMOTE_ADDR");

  6. #6
    Membre éprouvé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Par défaut
    Citation Envoyé par cobra-expert
    Oui mais sa fais des requètes en plus....
    Ca fait 2 requettes enplus. Et tu peut faire la meme chose avec ton .dat de toute manière.

Discussions similaires

  1. qui est en ligne ?
    Par Invité2 dans le forum Langage
    Réponses: 4
    Dernier message: 14/06/2011, 12h47
  2. Réponses: 2
    Dernier message: 18/08/2009, 21h14
  3. [MySQL] Faire passer ma de la table sql qui est en post via une session ou un get
    Par valvalval dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/08/2008, 12h57
  4. [MySQL] Qui est en ligne
    Par Him dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 22/04/2008, 21h43
  5. Qui est en ligne
    Par guiguistuder dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 08/06/2006, 17h21

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