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 :

Savoir si une session est encore active


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Par défaut Savoir si une session est encore active
    Bonjour, dans un script, je génère des sessions qui sont numérotées.
    J'enregistre les sessions avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    session_start();
    session_register($clesession);
    Chaque clé de session est enregistrée dans une BDD.

    Ma question, comment faire pour savoir si une session est encore active?
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!session_is_registered($record['numsession']))
    Mais ce code ne fonctionne pas comme je le voudrais.
    Moi je voudrais tester toutes les sessions coté serveur et savoir si un utilisateur est encore connecté à cette session.

    Peut être en lisant dans le dossier sessions???

    Merci de votre aide.

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 373
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 373
    Billets dans le blog
    17
    Par défaut
    Il faudrait définir ce qu'est une session active

    PS : session_register( ) est déprécié depuis pas mal de temps et obsolète depuis PHP 5.3

  3. #3
    Membre éprouvé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Par défaut
    En faite, sur un site je propose de tester un plugin pour tinymce. Ce plugin permet d'uploader des images sur le serveur.

    Au chargement de la page, je créer une clé je créer un dossier temporaire avec le numéro de clé dans ce dossier temporaire j'ajoute 3 photos histoire de remplir un peut.

    Ensuite, j'ajoute la clé dans une BDD, et je voudrais démarrer une session portant se numéro de clé.

    Lorsqu'un autre utilisateur vas sur le site, mon script récupère toutes les clés enregistrées dans la base. Ces clés correspondent donc aux différentes session créées par les utilisateurs.

    Ensuite, je veux analyser chaque clé pour savoir si un utilisateur est encore connecté dessus.

    Si personne n'est connecté, je supprime automatiquement l'enregistrement dans la base puis le dossier temporaire...

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 373
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 373
    Billets dans le blog
    17
    Par défaut
    je veux analyser chaque clé pour savoir si un utilisateur est encore connecté dessus.
    Re, merci pour les précisions
    Comment définis-tu un utilisateur connecté ou non-connecté ?

  5. #5
    Membre éprouvé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Par défaut
    Merci a toi de Prendre du temps pour repondre!

    En faite il n'y a pas de Login pour gerer les utilisateurs...
    Je veux juste que quand quelqu'un arrive sur la page d'essais du plugin, un dossier temporaire soit créé.

    Au depart, je n'avais pas pensé a ca et du coup tout le monde bricolaient dans le meme dossier temporaire... Si un utilisateur ajoutait une photo pour faire des test, les autres pouvaient tout voir! Le dossier temporaire commun a tous était vidé a chaque ouverture de la page...

    Or je souhaite que si plusieurs utilisateurs se connectent sur la page de test, il y ai un dossier temporaire pour chaque personne.
    J'arrive a le faire en générant une clé, mais mon soucis c'est de supprimer automatiquement les dossiers temporaire apres qu'un utilisateur quite la page ou ferme le navigateur...

    Merci de ton aide.

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 373
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 373
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par jojo86 Voir le message
    mais mon soucis c'est de supprimer automatiquement les dossiers temporaire apres qu'un utilisateur quite la page
    Suffit de tester si l'utilisateur se trouve sur la page de test des plugins ou pas.
    Si non suppression du dossier temporaire.
    Tu peux ajouter un flag pour ne pas relancer la procédure inutilement à chaque hit.

    ou ferme le navigateur...
    Plus difficile, lancer une purge de temps en temps... Pour la faire automatiquement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ( mt_rand(1, 100) === 1 ) { // Tous les ~100 chargements
        purger( ) ;
    }
    Puisqu'il semble que tu aies accès au dossier des sessions :
    - Supprimer les dossiers temporaires dont on ne retrouve pas le nom parmi les fichiers de session
    - Supprimer les dossiers temporaires dont le fichier de session est trop vieux

  7. #7
    Membre éprouvé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Suffit de tester si l'utilisateur se trouve sur la page de test des plugins ou pas.
    Si non suppression du dossier temporaire.
    Cette piste me convient, mais comment faire pour savoir si l'utilisateur est connecté sur la page ou non?

    Sinon j'avais fait une bidouille pour supprimer les sessions créées il y a plus de trois heures. J'avais ajouté un champ dans ma table format DATETIME a la création du dossier temporaire j'ajoutais NOW dans ma table...
    Ensuite, a chaque chargement de page je viens analyser chaque enregistrement et si le DATETIME >3h alors on supprime...

    Mais ta solution que j'ai mis en QUOTE me conviendrais mieux...

    Merci!

  8. #8
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 373
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 373
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par jojo86 Voir le message
    comment faire pour savoir si l'utilisateur est connecté sur la page ou non?
    A mettre sur chaque page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ( ! est_sur_page_plugins( ) ) {
        purger( ) ;
    }
    Pour déterminer la page en cours regarde dans le tableau $_SERVER, notamment PHP_SELF et SCRIPT_NAME
    http://php.net/manual/fr/reserved.variables.server.php

  9. #9
    Membre éprouvé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Par défaut
    Ok je comprends, mais si un user est sur la page et qu'il ferme le navigateur???

  10. #10
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 373
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 373
    Billets dans le blog
    17
    Par défaut
    Tu ne pourras pas détecter de manière fiable la fermeture du navigateur.
    Donc il faut laisser mourir la session comme tu le fais déjà...

  11. #11
    Membre éprouvé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Par défaut
    Je vais faire un mix de mon idée de depart et de la tienne!

    Je limite la session a 3 heures avec un decompte visuel pour l'utilisateur. Au bout de 3heures je reload la page si le user est encore dessus.
    Sinon, lorsqu'un autre utilisateur se connecte a la page, je verifie les enregistrements de la base et je supprime tout ce qui est supérieur a 3h.

    En plus, sur chaque page je ferais peut etre un appel a la fonction de purge... Quoi que c'est peut etre pas necessaire...
    A moins que je mette en place une table nomée LastPurge... A chaque purge je met a jour cette table, et si la derniere purge remonte a moins de 3heures alors on n'execute pas le script...

Discussions similaires

  1. comment savoir si une session d'un utilisateur est active ?
    Par orman05 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/02/2013, 17h32
  2. Savoir si une applet est active dans la page html
    Par pcouas dans le forum Applets
    Réponses: 1
    Dernier message: 26/03/2009, 08h24
  3. Réponses: 5
    Dernier message: 10/04/2008, 10h37
  4. Comment savoir qu'une session est valide?
    Par clairette dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 21/02/2007, 19h57
  5. [Sécurité] Savoir si une session est detruite
    Par toure32 dans le forum Langage
    Réponses: 2
    Dernier message: 17/02/2006, 17h55

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