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 :

vider une session a la fermeture de la page


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Par défaut vider une session a la fermeture de la page
    Bonjour,

    je cherche un moyen pour vider une session lors de la fermeture de la page.

    Voici mon problème
    Dans le cadre d'un panier, je créé une session (panier) dans laquelle j'ajoute ou supprime des produits. Si je ne vide pas mon panier avant de quitter ma page, lorsque je l'ouvre à nouveau, ma session est toujours existante et mon panier est toujours plein.

    J'ai déjà essayer plusieurs choses tel que:
    session_cache_expire();

    Quelqu'un aurait-il une idée?

    Merci d'avance

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    Pour qu'on soit sûr de parler de la même chose, qu'appelles-tu "quitter une page" ?

  3. #3
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Effectivement, il faudrait fournir plus de précision.

    Dans le cadre d'un panier, je créé une session (panier) dans laquelle j'ajoute ou supprime des produits. Si je ne vide pas mon panier avant de quitter ma page, lorsque je l'ouvre à nouveau, ma session est toujours existante et mon panier est toujours plein.
    N'est ce pas le but des sessions, c'est à dire de conserver les données (comme un panier) tout au long de la navigation, donc quelque soit la page visitée ?
    La suppression du panier ne devrait il pas être une action volontaire de l'utilisateur ? Chose qui a l'air d'être fonctionnel, non ?


    Question comme ça à tout hasard.
    Si tu ferme explicitement le navigateur (et non pas un onglet), voir redémarrer ton PC (après avoir mis au moins 1 produit dans le panier), est ce que tu remarque après ça que le produit est toujours dans le panier ?

  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 : 38
    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
    Par défaut
    Il n'y a pas, à ma connaissance, de moyen fiable de détecter la fermeture d'un navigateur.

    En terme d'expérience utilisateur, il est normal que le panier (shopping cart) conserve son état lors de la réouverture du navigateur.

    Néanmoins, tu peux fixer un temps de durée de vie de session.

  5. #5
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Citation Envoyé par ThomasR
    En terme d'expérience utilisateur, il est normal que le panier (shopping cart) conserve son état lors de la réouverture du navigateur.
    Ne serait il pas plutôt l'inverse ?
    Il me semble que le cas le plus courant serait que lorsqu'on ferme le navigateur, et non l'onglet, les cookies seraient détruis, du coup, même si le fichier de session a une date valide, une nouvelle session sera créé.
    Au bout, toutes les données seront perdues, entre autre le panier.

    Il me semble que c'est ainsi sur IE tout comme FF par défaut, non ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 104
    Par défaut
    Je confirme les sessions sont détruites à la fermeture du navigateur. Et elle ne le sont pas à la fermeture d'un onglet, c'est cela son problème il me semble.

    La suppression du panier ne devrait il pas être une action volontaire de l'utilisateur ?
    Dans son cas je pense aussi que le mieux serait un bouton genre "logout" ou "vider le panier" qui se chargerait de vider les sessions ou de les détruire suivant le besoin.

  7. #7
    Membre éclairé
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Par défaut
    Bonjour à tous et merci pour votre aide,

    je crois que je vais limiter la durée de vie de ma session comme le conseil ThomasR. Je crois que ce sera plus simple.
    Ou alors, je vais faire un système de login/logout… à voir.

    J'ai par contre appliqué sur un autre projet vos conseils donnés dans mon poste d'hier "Impossible d'afficher le contenu de mon panier et supprimer des éléme".

    Je rencontre à nouveau un problème de suppression d'élément mais je ne vois pas ce qui coince.
    J'ai ouvert un nouveau poste "Sessions : efface tout au lieu de 1 élément". Si l'un ou l'autre sait m'éclairer sur mon erreur ce serait sympa?

    Merci pour votre aide !

  8. #8
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    je crois que je vais limiter la durée de vie de ma session comme le conseil ThomasR. Je crois que ce sera plus simple.
    Ou alors, je vais faire un système de login/logout… à voir.
    Diminuer le temps d'expiration en supposant qu'il serait justement trop long pourrait éventuellement supprimer la session au bout d'un certain temps.
    Mais est ce réellement le fond du problème ?
    Comme ça, j'en doute.

    Fais un phpinfo() et recherche ceci :session.gc_maxlifetime, ça te donnera le temps d'expiration de la session, qui par défaut vaut 1440 (soit 24 minutes).
    Ce qui te permettra de voir si c'est normal ou pas de ton coté.


    De même que vouloir supprimer un élément de la session et supprimer l'intégralité de la session (logout) c'est tout de même 2 choses différentes.


    En tout cas, tant que tu ne donneras pas quelques informations supplémentaires, ou effectuer les divers essai qu'on te suggère, à part tomber sur le bug par hasard, on pourra difficilement te venir en aide.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/09/2010, 22h30
  2. Réponses: 5
    Dernier message: 07/09/2009, 18h37
  3. Détecter la fermeture d'une session Windows
    Par atao29 dans le forum MFC
    Réponses: 1
    Dernier message: 15/02/2006, 11h19
  4. Réponses: 7
    Dernier message: 12/10/2005, 09h19
  5. Vider une table a une fermeture subite
    Par mimosa7 dans le forum Access
    Réponses: 6
    Dernier message: 15/06/2005, 17h13

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