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 :

Détecter lorsque l'on ferme le navigateur


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de Sytchev3
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 433
    Par défaut Détecter lorsque l'on ferme le navigateur
    Bonjour à tous, je vous explique mon problème :
    Le site que je développe en php permet de se loguer avec un identifiant et un mot de passe, une fois authentifié je met une valeur à jour dans ma base de données (connecte=Vrai) comme ça un autre utilisateur ne peut pas se servir du même compte si je me déconnecte en cliquant sur un bouton déconnecter je met une valeur à jour (connecte=Faux). Le problème est que je si quitte le navigateur sans me déconnecter la valeur n'est pas mise à jour et il impossible de se reconnecter. Comment puis je palier à mon problème ???

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    C'est une question récurrente : le protocole HTTP est sans état donc le plus fiable reste de se baser sur un timestamp, mis à jour à chaque visite, et d'estimer qu'au-delà d'une certaine période l'utilisateur est inactif. En revanche, c'est un peu plus lourd (le nombre de requêtes s'en trouvant augmenté).

  3. #3
    Membre éclairé Avatar de Sytchev3
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 433
    Par défaut
    Le problème c'est que gérer le fait que l'utilisateur est inactif pendant un temps donné n'est pas simple et cela ne changera rien au fait que si il ferme le navigateur brutalement ma valeur ne sera pas remise à jour correctement.

  4. #4
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Tu as d'autres solutions de contournement : tu peux mémoriser dans la session l'adresse ip de l'utilisateur qui est connecté. Comme ca, si tu vois qu'un utilisateur essaie de se connecter alors que dans ta base il est déjà marqué comme connecté, tu vérifies l'ip. Si c'est la meme, tu le laisses entrer, sinon tu dis "ce compte est déjà utilisé pour le moment blablabla"

  5. #5
    Membre éclairé Avatar de Sytchev3
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 433
    Par défaut
    Mais dans quoi dois je mémoriser l'adresse ip ??? un fichier, une variable dans ma base de données ???

  6. #6
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Ben dans la base de données non? Tu as une colonne qui te dit si une personne est connectée ou pas, avec une date de derniere connexion/action non?

    Ben tu remplaces la colonne de connecté/non connecté par une adresse ip.

  7. #7
    Membre éclairé Avatar de knoodrake
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2007
    Messages : 86
    Par défaut
    Tu as d'autres solutions de contournement : tu peux mémoriser dans la session l'adresse ip de l'utilisateur qui est connecté. Comme ca, si tu vois qu'un utilisateur essaie de se connecter alors que dans ta base il est déjà marqué comme connecté, tu vérifies l'ip. Si c'est la meme, tu le laisses entrer, sinon tu dis "ce compte est déjà utilisé pour le moment blablabla"
    Mais ca ne rêgle pas totalement le probleme car si l'utilisateur ferme "brutalement" son navigateur, l'adresse IP restera dans la BDD. Imaginons qu'il essaye ensuite de se reconnecter d'une autre IP ? ( après un changement d'IP par son FAI par exemple, ou d'un autre poste ? ) Ben il sera rejeté.
    Ou alors faut mettre en place en parallèle une détection d'inactivité comme dit plus haut. Mais même la, ca voudrai dire qu'en théorie, si l'utilisateur quite son navigateur puis se reconecte mettons dans la minute qui suit d'une autre IP il sera bloqué.

    Non, je croi qu'il n'y a pas vraiment de solution parfaite. Ou alors des trucs super lourd-dingue genre de l'Ajax qui transmet un signe de vie très régulierement et une espèce de tache crond qui lance un script php qui met "connecte=faux" si pas de signe de vie... ..bonjour le serveur

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/01/2008, 12h41
  2. Ouvrir une popup quand on ferme le navigateur
    Par Florent08800 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/09/2006, 11h24
  3. Exécuter du code lorsque qu'on ferme la fenêtre
    Par gromit83 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/05/2006, 11h05
  4. Exécuter une action quand on ferme le navigateur
    Par Leobaillard dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/01/2006, 12h41
  5. Détecter lorsque l'utilisateur sort d'un controle Image
    Par tebonb dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/12/2005, 08h53

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