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 12/10/2007, 16h33   #1
Membre régulier
 
Avatar de Sytchev3
 
Inscription : mai 2005
Messages : 423
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 423
Points : 95
Points : 95
Envoyer un message via MSN à Sytchev3
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 ???
Sytchev3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 18h34   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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é).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2007, 09h38   #3
Membre régulier
 
Avatar de Sytchev3
 
Inscription : mai 2005
Messages : 423
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 423
Points : 95
Points : 95
Envoyer un message via MSN à Sytchev3
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.
Sytchev3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2007, 09h55   #4
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
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"
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2007, 10h28   #5
Membre régulier
 
Avatar de Sytchev3
 
Inscription : mai 2005
Messages : 423
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 423
Points : 95
Points : 95
Envoyer un message via MSN à Sytchev3
Mais dans quoi dois je mémoriser l'adresse ip ??? un fichier, une variable dans ma base de données ???
Sytchev3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2007, 10h30   #6
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
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.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2007, 15h45   #7
Membre régulier
 
Avatar de knoodrake
 
Inscription : juin 2007
Messages : 86
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : juin 2007
Messages : 86
Points : 74
Points : 74
Citation:
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
knoodrake est dé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 15h27.


 
 
 
 
Partenaires

Hébergement Web