Pas deux connexions sur le meme compte

Fermé
the.co Messages postés 27 Date d'inscription mercredi 9 novembre 2011 Statut Membre Dernière intervention 18 février 2013 - 18 févr. 2013 à 10:59
xamurai Messages postés 223 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 19 février 2013 - 18 févr. 2013 à 14:48
Bonjour à tous!

Voilà, j'ai créé un site avec un système de connexion, j'aimerai que deux connexions (ou plus hein) sur un meme compte ne soient pas possible ? Que le dernier qui s'est connecté se fasse éjecter ou alors une autre technique?


Ex :
imaginons que j'ai divulgué mon login et mot de passe par mégarde (grosse blague)

je me connecte sur mon compte avec mon login et mdp et la quelqu'un se connecte en meme temps que moi de chez lui avec mon login et mdp.

Ca : je voudrai que se soit pas possible.

Si vous avez des propositions c'est avec plaisir!
Merci d'avance ! :)




4 réponses

ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
18 févr. 2013 à 11:07
Bonjour,

on peut imaginer différentes méthodes pour faire ça, mais en php pur, ça risque de ne pas être très précis.

en gros ce que tu peux faire :
commencer par stocker le session id de l'utilisateur qui se connecte, ainsi que le timestamp du moment où il le fait
ensuite tu peux mettre à jour ce timestamp régulièrement (sur chaque page, via une requête ajax ?) pour signifier au site que l'utilisateur est toujours connecté
et à la connexion, tu vérifies le session id et le timestamp, si le session id est différent et que la différence entre le timestamp actuel et celui en base est inférieur à un "timeout" défini (c'est là que c'est un peu imprécis), tu refuses l'authentification.

Pour ma part, je ferai un truc de ce genre...
je sais pas si tu m'as suivi ^^
0
the.co Messages postés 27 Date d'inscription mercredi 9 novembre 2011 Statut Membre Dernière intervention 18 février 2013 1
18 févr. 2013 à 11:14
oui je t'ai complètement suivi! J'avais pensé à ça aussi, mais je ne sais pas comment le représenter. As tu du code à me proposer?
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
18 févr. 2013 à 11:16
Ah non, désolé j'ai pas ça sous la main, mais si tu maîtrises un peu php, lance toi, je t'aiderai si tu as un soucis.
0
xamurai Messages postés 223 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 19 février 2013 15
Modifié par xamurai le 18/02/2013 à 15:02
ce n'est pas une bonne technique.

1- Utilisateur A seconnecte: tu crées une session.... parallelement tu enregistre la clé de la session dans un fichier (methode de caching... si tu es bien avancé dans le PHP: voir 'redis' sur google)
avc un mapping par exemple:
$array_list[$identifiant_de_l_utilisateur] = session_id

2- lorsque l'utilisateur (A normalement mais il peux s'agir d'un utilisateur B) fait une requete, tu verifies si ce utilisateur existe deja dans $array_list

a) L'utilisateur existe: verifie si la clé de session (session_id) correspond à celle enregistré dans ton fichier (en 1-)
a_1: la clé session_id correspond --> tout est normal

a_2: la clé session_id ne correspond pas: ce qui signignie 2 connections utilisant le
meme identifiant
-> $array_list[$identifiant_de_l_utilisateur] = null
-> ce qui signifie que l'utilisateur doit se reidentifier (cas 1-)
0