Page 1 sur 1

Eviter deux sessions en même temps

Posté : 10 avr. 2009, 14:34
par lecroquant
Bonjour

Dans un site j'ai créé un zone administrateur protégé par une session et accessible a plusieurs administrteurs.
Je me demande comment faire pour éviter que deux administrateurs soient en train de modifier le site même temps.
Existe t'il un moyen pour un administrateur qui veut se connecter de savoir si il y a déja un administrateur qui a ouvert une session ?

Merci de votre aide
Mathieu

Posté : 10 avr. 2009, 14:47
par stopher
Salut ,

Perso , j'utiliserai le principe du Mutex .

Un jeton , qui n'a que deux valeurs 0 et 1 ... lorsqu'un utilisateur prend le jeton , personne d'autre que l'utilisateur courant ne peut accéder à la ressource partagé concerné .

Dés que l'utilisateur courant a terminé ou qu'un timeout se déclanche , il rend le jeton , un autre utilisateur peut alors acceder à la ressource ..

Ch.

Posté : 10 avr. 2009, 15:25
par lecroquant
Merci Ch

Suis allez voir ce qu'est mutex...
ça a l'air un peu trop complexe pour moi :-(

Je vais plutôt partager l'administration en plusieurs zones


Mathieu

Posté : 10 avr. 2009, 15:55
par Ryle
C'est le principe surtout qui est intéressant... la réalisation peut facilement s'adapter.

Supposons par exemple qu'un administrateur s'authentifie sur ton site. Tout ce dont tu as besoin c'est de créer un fichier (même vide) ou mettre à jour un champ dans une base de données, pour dire qu'il est connecté. Lorsqu'il se déconnecte, tu supprimes ton fichier, ou ta valeur en base, ou autre...

Lorsqu'un autre administrateur tente de se connecter, tu regardes si le fichier existe, ou s'il y a une valeur en base, .. et si c'est le cas, tu lui dis d'aller prendre un café en attendant que l'autre ait libéré la place :)

Ce que je te recommande, dans la mesure où il peut être assez difficile de détecter la fin d'une session (parce que y a des gens biens qui se déconnectent proprement, mais d'autres beaucoup moins qui ferment simplement la fenêtre ou laissent s'écouler le timeout), c'est de stocker l'heure quand ton administrateur fait quelque chose.
Ainsi quand un nouvel admin se pointe, si jamais tu trouves ton enregistrement en base, mais que celui-ci date de plus d'une heure, tu peux considérer que l'autre admin s'est endormit, et l'autoriser malgré tout à entrer. Ca permet d'éviter certains bloquages :)

Posté : 10 avr. 2009, 16:31
par lecroquant
Mais oui :-) il faudrait donc qu'a la connexion d'un administrateur je place l'heure dans un fichier et qu'a chaque action de sa part je modifie l'heure.
ainsi si l'heure actuelle depasse les 24 minutes (qui est le timeout de mes sessions) c'est que l'administrateur précedent n'est plus la !!! génial!!
Merci, je vais essayer ça
Mathieu