[PHP] Un seul utilisateur par page...?

Un seul utilisateur par page...? [PHP] - PHP - Programmation

Marsh Posté le 27-05-2005 à 10:05:20    


Bonjour à tous,
 
Je suis actuellemet dans le développement d'un site. Sur la page d'accueil, l'utilisateur se connecte et selon son "type de compte" à accès a telle ou telle page. Cependant, je cherche un moyen de n'autoriser qu'un seul utilisateur à être dans une page.
 
Exemple :
 
- Un utilisateur "jean" se connecte,
- il va sur la page pour modifier une info dans la base de données.
- "pierre", un autre utilisateur se connecte lui aussi,
- lui aussi veut modifier des infos dans la base mais comme "jean" est déjà dans cette page, il ne peut y acceder et attend sont tour.
En gros c'est un peut comme lorsque l'on veut ouvir un fichier office et qu'il est déjà en utilisation...
 
 
Par quelle méthode puis-je réaliser celà ? :??:
 
Merci :jap:
 


---------------
flick r
Reply

Marsh Posté le 27-05-2005 à 10:05:20   

Reply

Marsh Posté le 27-05-2005 à 10:15:43    

Ce que tu peux faire c ke tu crées une table historique avec l'identifiant du pseudo, et sa derniere page vu, ainsi que l'heure a laquelle il l'a vu . Quand un mec va sur une page, tu changes la derniere page vue ainsi que la date . Quand un autre veut venir sur cette page, si personne ds la base n'a vu cette page la , c bon . Si qqn a cette page comme derniere page mais disons que la date remonte a + de 3 minutes, on considères qu'il n'est plus sur la page et donc le 2eme peut y acceder. Sinon, il est redirigé vers une page d'attente . T'as compris ? :s

Reply

Marsh Posté le 27-05-2005 à 10:15:46    

par exemple avec un identifiant unique par page + système de lock géré soit dans ta base soit dans un fichier

Reply

Marsh Posté le 27-05-2005 à 10:19:45    

j'apporte ma contribution.
Un systeme binaire sur chaque fichier. Quand quelqu'un rentre dans une page cette page est sur un état O/1 et si quelqu'un d'autre rentre dans cette il regarde l'état de cette page et se fait jeter. Si la personne change de page il faut revenir l'état de la page a l'initiale.

Reply

Marsh Posté le 27-05-2005 à 10:24:10    

Berceker United a écrit :

j'apporte ma contribution.
Un systeme binaire sur chaque fichier. Quand quelqu'un rentre dans une page cette page est sur un état O/1 et si quelqu'un d'autre rentre dans cette il regarde l'état de cette page et se fait jeter. [b][/b]Si la personne change de page il faut revenir l'état de la page a l'initiale.[/b]


 
Et si la personne plante pendant la navigation? La page reste à 1 alors que y'a personne dessus

Reply

Marsh Posté le 27-05-2005 à 10:24:20    

J'ai le meme probleme, me suis pose dessus et j'ai rien mis en place... voila si ca peut t'aider.
 
Tiens ils debatent sur le sujet, c'est assez explicite
 
http://groups.google.fr/group/fr.c [...] bf57520fae

Reply

Marsh Posté le 27-05-2005 à 10:28:58    


 

soju a écrit :

par exemple avec un identifiant unique par page + système de lock géré soit dans ta base soit dans un fichier


Berceker United a écrit :

j'apporte ma contribution.
Un systeme binaire sur chaque fichier. Quand quelqu'un rentre dans une page cette page est sur un état O/1 et si quelqu'un d'autre rentre dans cette il regarde l'état de cette page et se fait jeter. Si la personne change de page il faut revenir l'état de la page a l'initiale.


 
 
En fait j'avait pensé à modifier un champs dans la base de données "1" ou "0", "1" quand l'utilisateur ouvre la page et "0" quand il a modifier l'information. Ca c'est pour "la procédure qui va bien" mais si l'utilisateur ne modifie rien, ferme son navigateur ou quitte le site, l'état restera à "1" ...
 
 

benamoubeach a écrit :

Ce que tu peux faire c ke tu crées une table historique avec l'identifiant du pseudo, et sa derniere page vu, ainsi que l'heure a laquelle il l'a vu . Quand un mec va sur une page, tu changes la derniere page vue ainsi que la date . Quand un autre veut venir sur cette page, si personne ds la base n'a vu cette page la , c bon . Si qqn a cette page comme derniere page mais disons que la date remonte a + de 3 minutes, on considères qu'il n'est plus sur la page et donc le 2eme peut y acceder. Sinon, il est redirigé vers une page d'attente . T'as compris ? :s


 
Oui j'ai a peu pres compris.  
Je vais essayer un trucs avec l'heure et un time out...
 
 


---------------
flick r
Reply

Marsh Posté le 27-05-2005 à 10:34:59    

cesarr89 a écrit :

Et si la personne plante pendant la navigation? La page reste à 1 alors que y'a personne dessus


Utilisation d'un variable de session, tu peux détecter si elle est utilisé ou pas via le session_id.

Reply

Marsh Posté le 27-05-2005 à 10:41:41    

Moi j opte pour l'utilisation d un timer, un peu lourd a gerer, mais il gere tous les cas de figure.
 
A la connexion du met a jour ton timer, que tu remet a chaque page.
 
Le client ferme sa session tu tu enregistre ton timer a bonne vieil date (jusque la classic)
 
Si un utilisateur demande la connexion, il se fait jeter par le timer
 
En cas de fermeture du browser, ou deconnexion, il ne pourra pas se connecter tant que le timer sera pas ecoule, c'est le hic, a toi d'ajuster le timer (moi c'est pour ca que j'ai pas mis en place cette methode)
 
Le session_id aidera pas, mettre a jour un booleen dans la bdd, ne gere pas les deconnexions....  
si ca t inspire

Reply

Marsh Posté le 27-05-2005 à 10:43:57    

JohnMeurt a écrit :

Moi j opte pour l'utilisation d un timer, un peu lourd a gerer, mais il gere tous les cas de figure.
 
A la connexion du met a jour ton timer, que tu remet a chaque page.
 
Le client ferme sa session tu tu enregistre ton timer a bonne vieil date (jusque la classic)
 
Si un utilisateur demande la connexion, il se fait jeter par le timer
 
En cas de fermeture du browser, ou deconnexion, il ne pourra pas se connecter tant que le timer sera pas ecoule, c'est le hic, a toi d'ajuster le timer (moi c'est pour ca que j'ai pas mis en place cette methode)
 
Le session_id aidera pas, mettre a jour un booleen dans la bdd, ne gere pas les deconnexions....  
si ca t inspire


 
+1
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed