2009-11-10 4 views
2

J'ai récemment simulé plusieurs connexions en PHP en utilisant 1 compte. Voici ce que je l'ai faitGestion de plusieurs connexions mono-utilisateur en PHP

  1. ouvert 2 écrans de connexion
  2. connecté en compte 1 en utilisant le premier écran de connexion
  3. connexion réussie
  4. connecté en compte 2 en utilisant le deuxième écran de connexion

Qu'est-ce que Je veux faire est de déconnecter l'utilisateur 1 lorsque l'utilisateur 2 se connecte sur la même machine et le même navigateur.

Comment faire cela? J'ai également fait cela avec Gmail et si l'email 1 est connecté et l'email 2 se connecte, Gmail affiche une boîte d'alerte disant que l'utilisateur 1 est déconnecté (en supposant que je me connecte en utilisant la même machine et dans le même navigateur).

+0

Voulez-vous que le premier compte se déconnecte immédiatement (par exemple, via la requête automatique AJAX) ou lorsqu'une autre requête est en cours? Vos deux écrans de connexion proviennent-ils de deux sessions de navigateur différentes, ou de la même chose? – Mallox

+0

Je veux les deux approches, ajax et la prochaine demande. la même session de navigateur – yretuta

Répondre

0

Si vous enregistrez sessions (ce qui est le cas si des données persistent), vérifiez simplement si l'autre session utilisateur existe et supprimez-la.

MISE À JOUR:

Je ne pense pas que ce soit l'approche Gmail, au moins il ne fonctionne pas la même chose pour moi. Je peux ouvrir 2 onglets de connexion Gmail (même navigateur, même session que celle indiquée) et m'authentifier dans les deux sans problème. Il est certain que les deux connexions apparaissent dans l'activité du compte Gmail, mais cela n'est pas considéré comme une activité malveillante, vous ne serez expulsé que si vous êtes sur un autre ordinateur.

Vous ne pouvez pas vraiment distinguer les utilisateurs utilisant le même navigateur et la même session, simplement parce que vous n'utilisez pas une connexion permanente, c'est la nature du Web.

Vous avez besoin de quelque chose pour les distinguer: date, session de navigateur, ip, n'importe quoi. Il semble que le seul choix que vous avez est d'utiliser un horodatage quand l'un d'entre eux se connecte, mais c'est assez difficile et je ne le recommande pas.

Je vais suggérer à USER 1 de claquer USER 2 s'il essaie d'utiliser le même login sur le même navigateur (ok, mauvaise blague).

+0

Je sauvegarde l'email et l'identifiant de l'utilisateur avec des sessions ... des suggestions sur une variable de drapeau de session que je peux utiliser? quelque chose comme is_logged_in? – yretuta

1

Si vous définissez le même cookie pour tous les utilisateurs, vous pouvez utiliser javascript pour vérifier périodiquement que le nom d'utilisateur/les données associés à ce cookie sont les mêmes que ceux qui ont été initialement connectés à la page.

Si vous constatez une modification, affichez l'avis et quittez la page. En outre, si vous devez absolument valider cela, vous pouvez envoyer l'utilisateur prévu avec chaque demande de publication/réception, en plus du cookie, puis valider que le cookie correspond à cet utilisateur. Cela provoque d'autres types de problèmes, donc c'est probablement exagéré.