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 :

[Cookies] Ouvrir une seule session


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de rinuom99
    Étudiant
    Inscrit en
    Août 2007
    Messages
    260
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 260
    Points : 171
    Points
    171
    Par défaut [Cookies] Ouvrir une seule session
    Bonjour,

    je suis un débutant en php et j'ai un petit souci avec les sessions, je suis entrain de programmer un compteur des visiteurs en ligne basé sur les sessions plus les adresses ip, jusqu'à ici tout marche bien, mais le problème c'est que lorsque on ouvre la page sur deux fenêtres différent sur le même pc le programme les compte deux fois, c normale car il donne pour chaque fenêtre un id de session différent,
    donc je cherche une moyenne pour ouvrir une et une seul session sur le même pc au moins pour le même navigateur !

    je sais pas s'il est possible, si c'est le cas comment je dois le faire !?

    merci d'avance

  2. #2
    Membre régulier Avatar de langevert
    Profil pro
    Inscrit en
    Août 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 92
    Points : 71
    Points
    71
    Par défaut
    Salut,

    Au début de chargement de chaque page, tu peux récupérer l'adresse ip et/ou le nom du navigateur du client. Tu les stocke dans une BDD, dans une table ayant la forme :
    - IP
    - Navigateur
    - DateMAJ (date/heure de l'insertion ou modification de la ligne dans la table)
    Si la ligne existe déjà dans la BDD, tu modifie le champ "DateMaj"
    Et tu supprimes régulièrement par exemple toutes les lignes où "DateMAJ" est plus vieux de 5min

    Voici une idée mais il y en a bien d'autre

  3. #3
    Membre habitué Avatar de rinuom99
    Étudiant
    Inscrit en
    Août 2007
    Messages
    260
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 260
    Points : 171
    Points
    171
    Par défaut
    Merci langevert,
    mais comme ça restera toujours le même problème, lorsque tu ouvre la page sur deux fenêtre de IE par exemple le serveur donnera pour chaque fenêtre un id de session différent et il compte le même visiteur deux fois

  4. #4
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    Pourquoi tu n'utilises pas la même session ?

  5. #5
    Membre habitué Avatar de rinuom99
    Étudiant
    Inscrit en
    Août 2007
    Messages
    260
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 260
    Points : 171
    Points
    171
    Par défaut
    ce que je cherche moi, comment utilisé la même session !?

  6. #6
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Soit une fonction insererPageVue($currentPageId) dans une page fonctions.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function insererPageVue($currentPageId){
        if(!isset($_SESSION['visited'])) $_SESSION['visited'] = Array();
        if(!in_array($_SESSION['visited'], $currentPageId)){
            // Jamais venu sur cette page (INSERT SQL ?)
            $_SESSION['visited'][] = $currentPageId;
        }
        else{
            // Déjà venu sur cette page (UPDATE SQL ?)
        }
    }
    Soit une page A.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    session_start();
    require 'fonctions.php';
    insererPageVue($_GET['page_id']); // ou l'url si c'est ta clé de tri
    ?>
    <html>
    <!-- ..... -->

  7. #7
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 185
    Points : 225
    Points
    225
    Par défaut
    Bonjour,
    Ce que tu dis comme problème est tout à fait normal, les sessions sont en fait un équivalent au cookie, du coup, le cookie est stocké par le navigateur, tu change de navigateur, tu change de cookie !
    En fait, la base de la session est une clef, stockée dans un cookie, que le navigateur renvoie avec toutes les pages web du site concerné.
    Du coup on vois rapidement la solution, mais elle peut être erronée ...
    Si l'IP est déjà utilisée, il suffirais de forcer l'ID de la session à la valeur de l'autre session déjà ouverte pour cette IP ...
    Ceci étant, la session est sensée se terminer au moment ou le client ferme son navigateur ...
    D'où, je pense, l'inutilité de la session dans le traçage des actions de la personne, autant tester directement sur son IP, même si ton idée n'est pas mauvaise, le souci est que tu n'a pas de moyen de déclarer une session pour tous les navigateurs d'un ordinateur ... tout ce que tu as pour travailler sur un PC, basiquement, c'est son IP

  8. #8
    Membre habitué Avatar de rinuom99
    Étudiant
    Inscrit en
    Août 2007
    Messages
    260
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 260
    Points : 171
    Points
    171
    Par défaut
    Bonjour LoveAngel,
    oui de la premier vue il appareil que l'utilisation des sessions ou même les cookies est inutile et na pas de sens puisque j'utilise aussi les adresses ip, mais j'ai l'utilise pour distingué les visiteurs qui utilisent la même adresse ip (le cas des cybercafés )

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2005
    Messages : 138
    Points : 173
    Points
    173
    Par défaut
    Il ne faut pas utiliser les sessions pour faire cela car chaque personne qui ouvre un navigateur crée une nouvelle session sur le serveur apache.

  10. #10
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Points : 186
    Points
    186
    Par défaut
    Bonsoir,

    Autant directement utiliser la base de donnée, si j'ai bien compris tu veux un compteur de connecté.

    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
     
    function compteur()
    {
       $nbMax = 300;  //temps maximum de connection (sans rapport avec la session mais avec l'activité)
       $tempsActuel = time();
       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'];
                }
     
        $temps = $tempsActuel+$nbMax;
     
        mysql_query("delete from cpt_live where time<=".$heure_cour."");    //Supression au passage des gens inactif
     
     
        $sql = mysql_query("select * from cpt_live where ip=\"$ip\""); // on regarde si il s'est déjà connecté
     
        if(mysql_num_rows($sql) ==0)
        {
            mysql_query("insert into cpt_live values(\"$ip\",\"$heure\")"); // insertion si c'est sa première connection
        }
        else
        {
            mysql_query("update cpt_live set time=".$heure." where ip=\"$ip\"");  //actualise le temps si la personne est toujours connecté
        }
        $query_sql = mysql_query("select pseudo from cpt_live");
        return mysql_num_rows($query_sql);  //Retourne le nombre de connecté
     
    }
    L'ip ne changeant pas selon les navigateurs cela devrait être suffisant.

    GoT

  11. #11
    Membre habitué Avatar de rinuom99
    Étudiant
    Inscrit en
    Août 2007
    Messages
    260
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 260
    Points : 171
    Points
    171
    Par défaut
    bonjour
    oui mais un compteur de visite simplement avec les ip c'est vraiment limité, surtout pour compté les visiteur qui utilisent la meme adresse ip, un réseau d'une université par exemple

  12. #12
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Points : 186
    Points
    186
    Par défaut
    Bonjour,

    A ce moment là il faudrait faire une session, mais changement de navigateur et bam nouvelle utilisateur.
    Pour ma part je fais en sorte que les utilisateurs s'identifie sur le site avant, et je les identifie avec le pseudo en plus.
    Si tu n'as pas besoin de pseudo, prend un cookie, celui-ci marche pour tous les navigateurs sur la même machine.

    GoT

  13. #13
    Membre habitué Avatar de rinuom99
    Étudiant
    Inscrit en
    Août 2007
    Messages
    260
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 260
    Points : 171
    Points
    171
    Par défaut
    oui je pense que y a pas une autre moyen que les cookies,

Discussions similaires

  1. Ouvrir une seule session
    Par yasstunisien dans le forum Administration
    Réponses: 1
    Dernier message: 30/06/2011, 09h12
  2. [SimpleXML] Ouvrir une seule fois un fichier xml
    Par persia dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 04/01/2008, 11h54
  3. Fermeture d'une seule session
    Par maraly dans le forum Langage
    Réponses: 2
    Dernier message: 31/08/2007, 10h07
  4. [Cookies] Modifier une variable session
    Par Galip dans le forum Langage
    Réponses: 1
    Dernier message: 19/06/2007, 00h13
  5. [Cookies] Ouvrir une session sur un autre site
    Par eraim dans le forum Langage
    Réponses: 1
    Dernier message: 05/09/2006, 15h33

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