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 :

[Sécurité] Fermeture session lors de la fermeture du navigateur


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 29
    Points
    29
    Par défaut [Sécurité] Fermeture session lors de la fermeture du navigateur
    Bonjour à tous,

    voici mon problème:

    Je dois faire une application web utilisant les sessions, lors d'un connexion je renseigne une table avec l'heure la date etc... et lorsque l'utilisateur ferme sa session je dois renseigner la table avec la durée de la session. Lorsque l'uilisateur clic gentillement sur "fermer session" il n'y a aucun problème mais s'il ferme son navigateur ça crain
    j'ai pensé à inserer une frame qui reste toujours ouverte avec un "<body onUnLoad = maFonction();>" mais je dois retravailler tout le site pour que la frame soit présente.
    Avez-vous une autre solution?

    Merci

  2. #2
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Points : 73
    Points
    73
    Par défaut
    Première chose : AHHHH nan, pas de frames! Ce mot là ne devrait pas exister

    Seconde chose : En effet, il est à ma connaissance impossible de fermer une session lorsque le navigateur se ferme. En effet, il s'agit là d'une action coté client. Le serveur n'en est donc pas conscient. Or le code PHP, c'est coté serveur. De plus, même si c'était possible, ce ne serait pas fiable : il suffirait que ton internaute quitte ton site sans fermer son navigateur (saisie d'une nouvelle URL, clic sur un des sites en marque-page etc), et tu reviens à ton problème initial.


    La solution meilleur solution d'après moi (assez lourde), serait simplement de mettre à jour le champs "heure_deco" de ta table à chaque chargement de page, avec l'heure actuelle. Ainsi, lorsqu'il quitte le site, bah tu as l'heure du chargement de sa dernière page. Tu peux utiliser une variable de session afin de vérifier qu'il s'agit toujours de la même session : si cette variable existe, tu mets à jour ton champs "heure déco", sinon tu crées un nouveau tuple dans ta table puisqu'il s'agit d'une nouvelle session, et tu initialise ta variable de session.

    Le soucis, mais là je doute que tu y puisse grand chose, est que tu mesures le temps entre le premier et le dernier chargement de page. Si ton internaute reste 10mn sur la dernière page avant de quitter ton site, tu ne le sauras pas. De même, s'il vient, va voir autre chose sur un autre site, et revient sur le tient avant que ta variable de session n'aie expiré, tu ne le sauras pas non plus. Enfin, si ton internaute reste trop de temps sur une même page (par exemple il y a un super long texte à lire), et que ta variable de session expire, tu auras l'impression que ton client est venu 2 fois distinctes, sans que ce soit le cas. Mais bon, ce sont là des cas relativement rare je crois, ce qui n'influencera pas ennormément tes statistiques, à mon avis.

    J'espère t'avoir un peu éclairé!

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    Merci pour ta réponse,

    je pense que je vais faire ça, mettre à jour la variable de session à chaque chargement de page, puis sur le serveur lancer un script php qui regarde les sessions ouverte et celles qui n'existent plus, les inscrires dans la base.
    Merci pour ton aide!

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    Mais question bête...pourquoi pas de frame?...

  5. #5
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Points : 73
    Points
    73
    Par défaut
    Je ta laisse lire (il y a 3 pages )

    http://www.projetweb.com/labalise/frames_1.php

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    Donc ce que je vais faire au final c'est un script qui va parcourir les sessions (comment récupérer les sessions? comment savoir si elles existent encore? avec l'id que je stock dans une base...) et puis ce script je le lance toutes les 5min grace à crontab.

    Vous en pensez quoi? et comment je sais si la session existe encore grace à son id?

    Merci!

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Points : 132
    Points
    132
    Par défaut
    Bonjour,
    Les sessions sont sauvegardées dans un répertoire temporaire (voir session.save_path dans php.ini). Ces fichiers contiennent les variables de session, rien de plus.
    Le mieux, comme le dit ChriGoLioNaDor, est de mettre à jour un champ date/heure (dernière mise à jour) dans la bdd à chaque page.
    Ensuite, un script examine les enregs qui n'ont pas de date/heure de fin de session, et si la dernière maj est plus vieille que session.cache_expire, on met à jour la date/heure de fin de session (= dernière maj + session.cache_expire).

    edit : pour limiter l'imprécision et augmenter la sécurité, il faut baisser la valeur de session.cache_expire (par défaut = 180, 3 heures ...). On peut mettre 30, voire moins ...

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    d'accord merci pour les réponses!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.4] Supprimer session lors de la fermeture du navigateur
    Par Romaiiiiiin dans le forum Langage
    Réponses: 3
    Dernier message: 01/03/2015, 03h52
  2. Réponses: 0
    Dernier message: 29/09/2012, 09h19
  3. Suppression session lors de la fermeture du browser
    Par stefsas dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/07/2010, 11h13
  4. [Sessions] session_destroy lors de la fermeture de la fenêtre
    Par mout551 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/07/2007, 10h13

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