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 :

Durée connexion session


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut Durée connexion session
    Salut à tous,

    Une petite question pour les connaisseurs :
    Est-ce possible d'avoir la durée de connexion de chaque utilisateur qui se connecte à un espace membre, stocker l'info dans une base sql et incrémenter cette durée à chaque nouvelle connexion, pour avoir la durée totale de connexion de chaque utilisateur à son espace membre.
    Ex :
    Gringo se connecte aujourd'hui 5min.
    lorsqu'il se déconnecte, on ajoute 5min à son profil dans la base de donnée.
    le lendemain il se reconnecte 10mn.
    en se déconnectant on lui ajoute les 10 minutes.
    si je regarde son profil, j'ai le total de ses connexions, soit 15mn...

    Des scripts du genre existentent-ils ?
    Des idées ?

    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    bonjour,

    qu'est ce qui te bloque sur la réalisation de ceci ?

    le seule point délicat et que les utilisateurs risquent de ne pas se deconnecter mais de simplement fermer leur navigateur, et ca tu ne peux pas le detecter.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Hello,

    eh bien pour commencer à réaliser la chose, faudrait juste que je sache comment calculer la durée d'une connexion en fonction de la session.

    Le reste, à savoir, récupérer la durée, la mettre ds une variable, l'insérer ds la base... devrait être à ma portée je pense.

    C'est pas faute d'avoir cherché sur le forum (ici et ailleurs) mais pas trouvé vraiment ce que je cherchais...

    Thx

  4. #4
    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
    Bonjour,

    Tu peux par exemple, au moment où la session est crée, essayer d'insérer dans la BDD la date / heure du moment.
    Au moment où la personne se déconnecte, tu fais le calcul entre la date de création et la date du moment.
    Mais comme le dit sabotage, le problème c'est quand la personne ferme son navigateur Internet, tu ne peux pas le détecter.

    Après tu peux partir du principe que si l'utilisateur n'a pas chargé de page au bout de x minutes, il est déconnecté (pour cela il faut faire la vérification au chargement de chaque page).

  5. #5
    Invité
    Invité(e)
    Par défaut
    Trés bien tout ça,

    Pour faire simple et avancer etape par etape, on part du principe que tous les users s'efforceront de se déconnecter "proprement" à la fin de leurs sessions.
    Maintenant j'avoue sécher devant la création du bout de code pour :
    "...au moment où la session est crée, essayer d'insérer dans la BDD la date / heure du moment. Au moment où la personne se déconnecte, tu fais le calcul entre la date de création et la date du moment...."

    une idée ou un exemple sur la syntaxe de ce morceau de code ?

    Thx

  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
    Bonjour,

    Connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $_SESSION['utilisateur'] = $login;
    mysql_query('UPDATE users SET derniere_connexion='.time().' WHERE user_id="'.$login.'"');
    Déconnexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $derniere_connexion = mysql_result(mysql_query('SELECT derniere_connexion FROM users WHERE user_id="'.$_SESSION['utilisateur'].'"'),0,'derniere_connexion');
    $temps_connexion = time() - $derniere_connexion;
     
    echo "Utilisateur connecté durant ".$temps_connexion." s";
    // Update du temps de connexion total du user ?
     
     
    unset($_SESSION['utilisateur']);
    session_destroy();
    Code non testé.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Un gros merci !

    pour le test je me charge de le faire biensûr et vous fait un retour ici au plus vite.


  8. #8
    Invité
    Invité(e)
    Par défaut
    Hello,

    Bon voici comment ca se présente :

    pour le sql on a une table nommée membre avec 3 champs :
    id , derniere_connexion et pseudo

    pour le code de connexion j'insère dans ma page membre.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?
    session_start(); //
    require("conf.php3");
    $pseudo_membre = $_SESSION['pseudo'];
    mysql_query('UPDATE membre SET derniere_connexion='.time().' WHERE pseudo="'.$pseudo_membre.'"');
    ?>
    pour le code de déconnexion, j'insère dans la page deconnexion.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    session_start();
    $derniere_connexion = mysql_result(mysql_query('SELECT derniere_connexion FROM membre WHERE pseudo="'.$_SESSION['pseudo'].'"'),0,'derniere_connexion');
    $temps_connexion = time() - $derniere_connexion;
    echo "Utilisateur connecté durant ".$temps_connexion." s";
    // Update du temps de connexion total du user ?
    unset($_SESSION['pseudo']);
    session_destroy();
    { Header("Location: index.php"); }
    ?>
    Ma table se présente sous cette forme avant connexion
    (derniere_connexion vierge...) :


    id------derniere_connexion------pseudo
    =================================
    1------------------------------hhm


    Table aprés connexion :

    id------derniere_connexion------pseudo
    =================================
    1------1226954360------hhm


    aprés plusieurs secondes deconnexion, ms la table ne change pas.
    et à la reconnexion, la table varie en :


    id------derniere_connexion------pseudo
    =================================
    1------1226954550------hhm



    Conclusion, on voit bien une incrémentation, mais à quoi correspond ce chiffre ?
    comment incrémenter la table uniquement lors de la deconnexion ?

    Thx

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ce chiffre est un timestamp unix (nombre de secondes écoulés depuis 1970).

    Il est normal qu'il ne change pas a la deconnexion, puisqu'il n'y pas d'UPDATE a la deconnexion.
    Dans le code de ThomasR il y avait un message indicant le temps passé, mais je suppose que tu n'as pas le temps de le voir puisque tu as ajouté une redirection.

    Tu peux ajouter une colonne a ta table a incrementer le temps de connexion puisqu'apparemment c'est ce que tu voulais au début.

  10. #10
    Invité
    Invité(e)
    Par défaut
    salut,

    Je suis toujours en train d'essayer le bout de code,
    je remets ici les test dés que possible.
    Thx


  11. #11
    Membre averti Avatar de mdr_cedrick
    Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2008
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2008
    Messages : 374
    Points : 336
    Points
    336
    Par défaut
    il est possible aussi lors de la fermeture de la page de lancer un petite fonction ajax afin de récupérer la session de l'utilisateur et d'updater ta bdd
    par contre, qui dit ajax dit javascript, donc si le javascript est désactivé ça ne fonctionnera pas

Discussions similaires

  1. [phpMyAdmin] Problème de durée de session sous phpMyAdmin
    Par AAlain dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 25/01/2011, 20h05
  2. [Cookies] limiter durée de session
    Par flydragon dans le forum Langage
    Réponses: 12
    Dernier message: 14/06/2006, 17h03
  3. [Sécurité] Problème durée de session
    Par flydragon dans le forum Langage
    Réponses: 10
    Dernier message: 15/05/2006, 10h19
  4. [JSF] Durée des sessions
    Par bslota dans le forum JSF
    Réponses: 1
    Dernier message: 18/01/2006, 11h04
  5. [VB.NET] Durée de session limitée ?
    Par Pari dans le forum ASP.NET
    Réponses: 3
    Dernier message: 28/04/2004, 17h45

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