Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/08/2007, 16h56   #1
Membre éclairé
 
Avatar de Linio
 
Inscription : octobre 2005
Messages : 427
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 427
Points : 304
Points : 304
Par défaut Destruction d'une session par rapport à un ID

Bonjour à tous!

J'ai cherché un peu partout, et j'avoue ne pas avoir trouvé la solution à mon problème. Etant d'un naturel aventureux, j'ai tenté de le faire au feeling, mais bizarrement ça n'a pas marché

Que je vous explique. Je cherche à faire quelque chose qui me semblait somme toute assez simple, à savoir, lorsqu'un utilisateur se connecte sur mon site, une session est créée et j'aimerais qu'il ne puisse pas y avoir deux connections concurrentes, donc si il y a une autre connection avec le même ID utilisateur, l'ancienne session est détruite.

J'avais pensé alors à quelque chose du goût de :

Code :
1
2
3
4
5
6
7
8
9
[...] // Requête qui récupère dans $row les infos de l'user en cours
if ($row['last_session'] != null){
	session_id($row['last_session']);
        session_destroy();
        session_start();
}
$id = $row['id_user'];
$request = "UPDATE users SET last_session='".session_id()."' WHERE id_user=".$id;
// execution de la requête
Alors là fait étrange, si je me connecte avec deux postes, ils partagent apparemment la même session, mais le comportement est totalement erratique, j'ai essayé avec un regenerate_id(), des fois je vois même les infos d'un autre utilisateur quand je clique sur le site...

Y'a t'il donc un moyen simple de supprimer une session sur le serveur selon son id (comment résumer simplement beaucoup de blabla ) ?
Linio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 11h57   #2
Membre actif
 
Homme Florian
Chef de projet NTIC
Inscription : novembre 2004
Messages : 205
Détails du profil
Informations personnelles :
Nom : Homme Florian
Âge : 26
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Chef de projet NTIC
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 205
Points : 159
Points : 159
Pourquoi ne pas simplement creer une variable de session qui contiendrait un parametre que tu verifierais chaque fois que c'est necessaire ?
Si ce parametre existe ou a une valeur precise, alors c'est deux connexions concomitantes, donc tu supprimes la precedente. Jamais fait avant mais ca devrait etre dans ce gout la ^_^
NaeiKinDus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 19h44   #3
Membre éclairé
 
Avatar de Linio
 
Inscription : octobre 2005
Messages : 427
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 427
Points : 304
Points : 304
Ca sous entend de passer par la base de donnée, vu que c'est le seul moyen de partager la donnée entre deux sessions.

Et en y avant réfléchis, ça me semble compliqué, car en l'occurence comment être sûr que je n'autodétruise pas moi même ma session.

Par exemple imaginons que je mettes en base un flag qui soit à 1 quand je me connecte, et lorsqu'un autre se connecte sur le même compte, le flag est activé, donc je détruis ma session (ou alors je change le flag à 2, et c'est la première session qui est détruite). Jusque là ça va. Mais quand désactiver le flag? Parce que la durée d'une session est tout ce qu'il y a de plus aléatoire, elle peux durer les 20 minutes de base, ou bien encore 1h pour peu que mon bonhomme reste connecté longtemps. Et c'est là pour moi que le bat blesse, je ne vois pas trop comment traiter ce cas là...
Linio est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h42.


 
 
 
 
Partenaires

Hébergement Web