ouvrir une seule et unique session?

ouvrir une seule et unique session? - PHP - Programmation

Marsh Posté le 09-02-2007 à 16:15:18    

Bonjour à tous,
 
j'ai réalisé un petit site qui demande login/mdp avec ouverture de session (puis je vérifie au début de toutes les pages que les variables $_SESSION['login'] et $_SESSION['pwd'] existent sinon retour vers la page de login)
 
ça marche bien, cependant je souhaiterais faire en sorte qu'il n'y ait qu'un utilisateur en meme tps. Donc qqun se connecte, il entre sur le site. si une 2eme personne essaye de se connecter, il reçoit un message d'erreur précisant qu'un client est déjà connecté.
 
est-ce possible, et si oui, comment?
 
merci d'avance :)

Reply

Marsh Posté le 09-02-2007 à 16:15:18   

Reply

Marsh Posté le 09-02-2007 à 16:27:31    

si tu utilises une bd tu peut gérer avec un compteur
sinon tu peux voir avec le nombre de fichiers de sessions
 
et attention au timeout

Reply

Marsh Posté le 09-02-2007 à 16:30:23    

Bah tu passes par la base de données :

 

- Tu rajoutes un champ "online" et "temps" dans la table des users.
- Dans "online" ça sera 0 pour non connecté et 1 pour connecté
- Dans "temps" ça sera un timestamp qui sera rafraichi à chaque page.

 

Car si l'utilisateur part, il faut pouvoir le "déconnecter" dans la base pour que le prochain utilisateur puisse se connecter au bout de 5 min d'inactivité par exemple.

 

Donc l'internaute part du site et pour le prochain, tu dois prendre le timestamp de la base + 5min (inactivité par exemple) et le comparer avec le timestamp du visiteur. Si timestamp+5min>timestamp visiteur : acces refusé car l'autre est encore en ligne (ou supposé en ligne avec l'inactivité).

 

Voilà.


Message édité par Surfoo le 09-02-2007 à 16:31:20
Reply

Marsh Posté le 09-02-2007 à 16:31:08    

non je n'utilise pas de bdd
 
y'a pas moyen de dire au serveur (easyphp en l'occurence) de ne pas accepter de requete start_session() si y'en a déjà une d'ouverte?

Reply

Marsh Posté le 09-02-2007 à 17:18:04    

Moriaben a écrit :

y'a pas moyen de dire au serveur (easyphp en l'occurence) de ne pas accepter de requete start_session() si y'en a déjà une d'ouverte?

je ne pense pas
 
vu que tu n'utilises pas de bd :
- soit tu fais un compteur dans un fichier
- soit tu comptes le nombre de sessions en cours en regardant dans le dossier des sessions (voir session.save_path dans php.ini)

Reply

Marsh Posté le 09-02-2007 à 17:22:51    

le coup du nombre de fichiers dans le dossier tmp ne fonctionne pas pour une raison très simple:
 
si je me connecte (je créé un fichier tmp) et que je quitte le browser sans la fermer la session (logout avec unset et destroy), et bien le fichier précedemment créé n'est pas supprimé (alors qu'il l'est quand je me déconnecte proprement du site)
 
concernant le compteur dans le fichier, je trouve pas ça très propre mais bon c'est ce qu'il y'a de plus simple à priori

Reply

Marsh Posté le 09-02-2007 à 17:27:52    

Moriaben a écrit :

si je me connecte (je créé un fichier tmp) et que je quitte le browser sans la fermer la session (logout avec unset et destroy), et bien le fichier précedemment créé n'est pas supprimé (alors qu'il l'est quand je me déconnecte proprement du site)

c'est bien pour ça que je parlais de timeout, tu auras le même problème avec fichier compteur vu que tu ne peux pas forcer tes utilisateurs à se déconnecter proprement

Reply

Marsh Posté le 09-02-2007 à 17:40:03    

tout à fait vrai :)

Reply

Sujets relatifs:

Leave a Replay

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