PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → empecher de se connecter 2 fois avec le meme compte
empecher de se connecter 2 fois avec le meme compte
Débuté par lolodev, 06 avr. 2020 15:13 - 4 réponses
Posté le 06 avril 2020 - 15:13
bonjour

je veux éviter de se connecter en même temps avec un compte déjà connecté -
un booléen en hfcs passe à vrai lorsque le 1er login se connecte
ce booléen passe à faux qd se déconnecte


par contre comment contrôler la déconnexion dûe à la fermeture du navigateur ?

merci
Membre enregistré
1 623 messages
Popularité : +100 (114 votes)
Posté le 06 avril 2020 - 18:02
Hello,

"par contre comment contrôler la déconnexion dû à la fermeture du navigateur ?"
De manière directe, ce n'est pas possible.

J'ai récemment donnée une piste sur un autre post :
https://forum.pcsoft.fr/fr-FR/pcsoft.fr.webdev/74637-wb23-code-lorsque-quitte-page/read.awp
Posté le 08 avril 2020 - 08:43
bonjour

j’étais parti sur un solution similaire
en mettant un automatisme à une procédure mais elle ne s’arrête jamais même si il n'y pas plus de client connectés

comment fais tu ta requete asynchrone ? : "Ce timer va envoyer a l'ouverture de la page ET toutes les minutes une requête Ajax asynchrone par exemple au serveur."

merci
Membre enregistré
1 623 messages
Popularité : +100 (114 votes)
Posté le 08 avril 2020 - 09:58
Il faut créer un timer navigateur qui va exécuter une requête navigateur. Idéalement, tu mets ce code dans le OnLoad d'un modele de page, et tu fait hériter TOUTES TES PAGES de ce modèle. Sinon il faudra retaper le code a chaque fois ...

///// CODE NAVIGATEUR :

DANS le Onload de la page (code navigateur) :
Timer(ActiveSession,5s) // va executer la procédure navigateur ActiveSession toutes les 5 secondes

Procedure ActiveSession()
AJAXExécuteAsynchrone(SessionKeepAlive,okTimer)

Procedure okTimer(bMajUser)
SELON bMajUser
CAS Vrai
// faire ou pas .. quelque chose
AUTRE CAS
// faire ou pas .. quelque chose
FIN


////// CODE SERVEUR :

Procedure SessionKeepAlive()
HLitRecherchePremier(Utilisateurs,Identifiant,gsCurrentUser)
SI HTOUVE(Utilisateurs) ALORS
Utilisateurs.DateDerniereConnexion = DateHeureSys()
HModifie(Utilisateurs)
RENVOYER Vrai
FIN
RENVOYER Faux



Dans ton cas c'est plus embêtant car si l'utilisateur quitte son navigateur par errreur ou que sa session webdev a plantée, si il tente de se reconnecter, il va devoir attendre pour se reconnecter... a moins d'avoir un timer TRES court genre 5 secondes...
Posté le 08 avril 2020 - 18:21
nickel merci

j'y etais presque mais j'avais inversé l'appel ajax et le timer :)

merci