Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/11/2010, 13h39   #1
Membre à l'essai
 
Inscription : mars 2009
Messages : 170
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 170
Points : 20
Points : 20
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
paintbox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 20h29   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 815
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 815
Points : 3 440
Points : 3 440
Pour qu'on soit sûr de parler de la même chose, qu'appelles-tu "quitter une page" ?
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 08h21   #3
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 694
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 694
Points : 3 261
Points : 3 261
Salut

Effectivement, il faudrait fournir plus de précision.

Citation:
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 ?
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 08h33   #4
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 134
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 134
Points : 2 877
Points : 2 877
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.
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/11/2010, 09h55   #5
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 694
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 694
Points : 3 261
Points : 3 261
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 ?
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 10h10   #6
Membre régulier
 
Inscription : octobre 2010
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : octobre 2010
Messages : 101
Points : 71
Points : 71
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.

Citation:
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.
proxichou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 17h07   #7
Membre à l'essai
 
Inscription : mars 2009
Messages : 170
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 170
Points : 20
Points : 20
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 !
paintbox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 10h05   #8
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 694
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 694
Points : 3 261
Points : 3 261
Citation:
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.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h04.


 
 
 
 
Partenaires

Hébergement Web