begin process at 2012 05 30 13:44:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Server Web

 > 

Apache

 > 

déconnexion utilisateur fermeture navigateur (requête sql)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

déconnexion utilisateur fermeture navigateur (requête sql)

jeudi 18 mars 2010 à 20:04:45 | déconnexion utilisateur fermeture navigateur (requête sql)

lectpe

Bonjour à tous.

Je suis en-train de réaliser un site web sur lequel peuvent s'inscrire puis se connecter des utilisateurs.
Dans ma base de données, une variable vaut 1 lorsque l'utilisateur est connecté et 0 lorsqu'il ne l'est pas.
Lors de la connexion à un compte, le serveur regarde dans la base de données si cette variable est à 1 et ne permet de se connecter que si la variable et à 0 afin d'éviter que deux personnes soient connectées en même temps sur le même compte.

Je suis alors confronté à un gros problème beaucoup discuté et toujours sans réponse (sauf une très compliquée) :
J'ai un bouton de déconnexion qui permet de déconnecter l'utilisateur lorsqu'il clique dessus. Seulement, l'utilisateur ne clique pas toujours sur ce bouton en quittant le site : il peut tout simplement fermer le navigateur. Et cela doit le déconnecter dans la base de donnée (et mettre la "variable de connexion" à 0.

Il faudrait alors envoyer une requête SQL au serveur pour changer la valeur de cette variable, mais lorsque l'utilisateur a fermé son navigateur, le serveur ne peut plus effectuer de requêtes SQL.

J'ai vu sur un site que je pouvais utiliser l'exécution périodique d'un script php (http://matthieu.developpez.com/execution_periodique/) mais cela est relativement compliqué.

J'ai alors pensé à envoyer des requêtes SQL à chaque changement de page, mais cela est beaucoup trop "lourd" et trop lent sur un ordinateur dont la capacité de mémoire est assez faible et où la connexion à Internet et lente.

J'aimerais que vous me donniez votre avis sur cette dernière solution ainsi que sur l'exécution périodique d'un script PHP ou que vous m'en proposiez une autre si vous en avez une meilleure.

Bien cordialement.

Grégory.
jeudi 18 mars 2010 à 20:53:10 | Re : déconnexion utilisateur fermeture navigateur (requête sql)

kohntark

Membre Club
Salut,

Il y a plusieurs façons de faire, dont un grand nombre sont inefficaces.
Tu cherches à savoir si l'utilisateur est toujours connecté, donc :
- un script AJAX qui envoie à intervalles réguliers (5 ... 60 sec) une requête au serveur
- ce dernier met à jour la table qui va bien

Le dernier "hit" de l'utilisateur est inférieur à x secondes => il est connecté
Le dernier "hit" de l'utilisateur est supérieur à x secondes => il n'est plus connecté

Simple non ?


Cordialement,


Kohntark -

samedi 20 mars 2010 à 11:07:57 | Re : déconnexion utilisateur fermeture navigateur (requête sql)

lectpe

Salut.

Ouais je vais essayer cette méthode.

Merci
vendredi 9 juillet 2010 à 21:53:47 | Re : déconnexion utilisateur fermeture navigateur (requête sql)

Tomswayne

Salut lectpe,

en fait, j'avais le même problème que toi par rapport à ce 1--0 qui switch en fonction du fait qu'il soit en ligne ou pas. J'ai trouvé une parade assez sympa, et l'avantage c'est que c'est de l'instantané. C'est très simple en fait, il te faut la librairie jquery pour te faciliter l'ajax.Pas besoin d'envoyer des ping.

Le principe est simple:
tu dois créer deux fonctions javascript:
quand il se connecte:tu demandes avec une requete normale (UPDATE bidule SET online=1 WHERE pseudo=machin)
dans ton footer, tu met une fonction JS qui te fais le checkup avec un window.onunload(quand il quitte la page en cours)
----->requete ajax vers ton formulaire de traitement et tu le deconnecte dans ta BDD.

il y a là 2 solutions pour l'utilisateur:

1/ Soit il se rend sur une autre page de ton site et dans ce cas là tu fais appel à une fonction JS window.onload (au chargement)
----->requete ajax vers ton formulaire de traitement et tu le reconnecte dans ta BDD.

2/ Soit il se rend sur un autre site, ou ferme son navigateur ou quoi que ce soit et dans ce cas là, c'est pas grave, car dans ta base de données il a été déconnecté.

L'avantage est que c'est de l'instantané, donc ta requete va s'effectuer quoi qu'il arrive

Si tu as besoin de plus de détails au fonctionnement de cette formule, n'hésites pas à m'envoyer un message...

Tom


Cette discussion est classée dans : variable, sql, déconnexion, utilisateur, navigateur


Répondre à ce message

Sujets en rapport avec ce message

$_SESSION et déconnexion [ par lagombe ] Salut à tous, voilà mon problème : j'utilise des variables de session sur une appli avec nom utilisateur et login... et en fait je n'arrive pas à "vi Commande SQL et variable PHP [ par PsykotropyK ] Voila je récupere une variable comme suit : Il s'agit d'une valeur numérique. ensuite l'idée et de l'intégrer a ma requete SQL comme suit : $q comment dans un formualire envoyer une variable non visible a l'utilisateur dans un formaulaire ??? [ par fredericmaill ] Bonjour, je voudrais aussi recuperer dans "insertion2.php", la variable "id"mais je veut pas quelle apparaisse dans la liste deroulante. comment faire Petite question de session... [ par CyberMen30 ] J'ai vu un exemple de variable de session.Dans cet exemple, la personne vérifie que l'utilisateur a le bon mot de passe et de loginet l'utilisateur a requête sql [ par fanchyfanch ] Bonjour,Est-il possible d'effectuer plusieurs requête sql du type "delete" ou "update" à partir d'un seul événement ?Je m'explique. Un utilisateur veu transmission variable [ par blinix123 ] Bonjour,j'aimerais récupérais une saisis utilisateur et faire un test sur celle-ci sur ma BDD. En fait l'utilisateur rentre un pseudo, je met le pseud affichage requete SQL [ par darkwisk ] Bonjour à tous,Voilà mon problème : j'ai une requete qui me renvoi ça :Paul : 2Pierre : 7Jacques : 0Voilà mon code :$res = mysql_query("SELECT * FROM Chat PHP : déconnexion d'utilisateur [ par mouahaha ] Salut à tous... Je suis en train de programmer un petit chat en php/sql, et je me retrouve face à un problème de taille : quand les utilisateurs ferme requete sql avec la variable php [ par soussan ] sltj'ai un champs qui peut contenir des paraghraphe et je veux faire la selection sur ce champs à partir d'une zone de texte de recherche. je veux fai variable dans requete sql [ par pronostic ] Bonjour. Comment faire ça en language normal ? $entrees= mysql_query('SELECT COUNT(*) AS nbre_entrees FROM prono where Pseudo=$usernameMerci merci :)


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,343 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales