Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
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 09/02/2011, 22h56   #1
Invité régulier
 
Inscription : octobre 2006
Messages : 111
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 111
Points : 7
Points : 7
Par défaut logout sur fermerture de ma fenetre ?

Bonjour j'ai un petit problème, je stocke un champs online en booléen dans ma base, j'ai fait une fonction log qui update a la connexion et logout qui update a off a la déconnexion, le problème vient quand un utilisateur se déconnecte sans cliquer sur le bouton mais en fermant son navigateur/fenêtre, le logout n'est pas pris en compte,


comment faire ?

Merci
caroen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 23h05   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Il n'y a pas de vraie solution.
De la même facon, tu ne peux pas dire si ton utilisateur est en train de lire une page de ton site ou s'il est parti de chez lui.

La meilleure méthode est d'enregistrer la date a chaque fois que l'utilisateur accès a une page et de considérer que les utilisateurs n'ayant pas une action récente sont deconnectés.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 23h15   #3
Invité régulier
 
Inscription : octobre 2006
Messages : 111
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 111
Points : 7
Points : 7
euh tu pourrais m'expliquer comment faire ?

Merci
caroen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 23h18   #4
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Bonsoir,

c'est simple, à chaque action de l'utilisateur sur ton site, tu mets un champ de type timestamp par exemple en base.

Ainsi, à tout moment tu peux "savoir" si un utilisateur est connecté ou non en faisant une différence entre maintenant et le champs en table. Si ce temps est supérieur à X minutes, tu le considères comme déconnecté.

Autre solution (plus lourde) : "pinguer" le client via un serveur de sockets
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 23h25   #5
Invité régulier
 
Inscription : octobre 2006
Messages : 111
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 111
Points : 7
Points : 7
merci ça j'avais compris, mais mon problème c'est plus : a chaque action sur mon site ?

comment je fais ça ? genre quand il surf simplement par exemple
caroen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 23h35   #6
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Quand il surfe comme tu dis, il affiche des pages php je suppose puisque tu postes ici. Dans ces pages php, tu choisis ou non de mettre à jour le champ...libre à toi de décider quelles actions doivent mettre à jour ta base
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 13h25   #7
Membre chevronné
 
Avatar de christele_r
 
Femme Christele
Inscription : novembre 2009
Messages : 661
Détails du profil
Informations personnelles :
Nom : Femme Christele
Âge : 39
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 661
Points : 690
Points : 690
Bonjour,
Tu as expliqué comment tu flag ta base de données logué=O/N
Sabotage tedit que s'il ne se delogue pas par ton bouton "se deconnecter"
tu ne peux maitriser s'il quitte ton site, ou est toujours dedans. Je dis ++ sur ce point.

Mais tu ne nous dis pas quel élément te donne l'info de "qui il est" de page en page

Je supposes qu' il sagit d'une valeur de session genre $_SESSION['pseudo']
qui sera ou vide ="" ou avec un pseudo ="machin"

Si c'est une formule de ce genre je te signales
1) que la session coté serveur s'arréte au bout de 15 minute (en général) d'inactivitée du visiteur.
2) que si un visiteur quiitte son navigateur, le cookie de session est supprimé

Voici les deux cas de deconnection sans intervention speciale !

Si un visiteur va sur tes pages et que au moins sur toutes tes pages tu as
session_start();
cela maintiens sa session et $_SESSION['pseudo']=="machin" !!
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 13h35   #8
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
oui, essayer de suivre l'heure de la dernière action d'un utilisateur reviens à réimplementer un dispositif qui existe en "natif" sur la gestion des $_SESSION. Suffit de mettre une durée de vie plus courte à ta session et tu auras l'effet voulu.

Sinon avec un peu d'ajax du peut implementer un periodical updateur qui réveille la $_SESSION toute les 10 secondes et quand ce "ping" disparait tu sais que ton utilisateur à arrêter javascript ou à fermé la page.

Attention à la bp toutefois.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 13h43   #9
Membre chevronné
 
Avatar de christele_r
 
Femme Christele
Inscription : novembre 2009
Messages : 661
Détails du profil
Informations personnelles :
Nom : Femme Christele
Âge : 39
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 661
Points : 690
Points : 690
Citation:
Envoyé par gene69 Voir le message
Sinon avec un peu d'ajax du peut implementer un periodical updateur qui réveille la $_SESSION toute les 10 secondes et quand ce "ping" disparait tu sais que ton utilisateur à arrêter javascript ou à fermé la page.
Vraiment faut le faire exprés toutes le 10 secondes, la grande majoritée des développeurs en restent aux 15 minutes ! Alors si tu as une page dont la lecture/contemplation exige 20 minutes ... oui une petite relance AJAX
allez on dira toute les cinq minutes
christele_r 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 11h37.


 
 
 
 
Partenaires

Hébergement Web