Permettre à une seule session et à un moment
Je voudrais faire mon site web pour permettre à une seule session à la fois. Par exemple, supposons que l'utilisateur de se connecter à mon site web sur firefox, si la connexion de l'utilisateur à un autre navigateur comme opera sur le même ordinateur ou un autre ordinateur, la session sur firefox sera détruit. Toutefois, la session sur firefox resté si il reste comme une session. Je peux savoir comment je peux faire cela? Je suis à l'aide de php et d'apache. Merci.
Ce qui concerne.
Benjamin
Pouvez-vous expliquer un peu plus, voulez-vous dire que vous voulez même utilisateur peut se connecter à l'autre ordinateur en même temps ?. s'il vous plaît corrigez-moi si je me trompe.
Je pense qu'il veut à l'opposé
Le post de jean à host89 dot net sur la PHP session_destroy page peuvent vous aider.
van Heukelom: Merci, je vais suggérer qu'il devrait passer par la base de données pour garder la connexion centralisée.
J'en veux un utilisateur de se connecter à un ordinateur en même temps. Cependant, disons que si l'utilisateur ferme le navigateur firefox, mais à force de connexion de mon site web sur n'importe quel autre navigateur sur le même ou un autre ordinateur, la session sur firefox que l'ordinateur reste quand il a le dos ouvert le navigateur. eu la moindre idée? merci.
Je pense qu'il veut à l'opposé
Le post de jean à host89 dot net sur la PHP session_destroy page peuvent vous aider.
van Heukelom: Merci, je vais suggérer qu'il devrait passer par la base de données pour garder la connexion centralisée.
J'en veux un utilisateur de se connecter à un ordinateur en même temps. Cependant, disons que si l'utilisateur ferme le navigateur firefox, mais à force de connexion de mon site web sur n'importe quel autre navigateur sur le même ou un autre ordinateur, la session sur firefox que l'ordinateur reste quand il a le dos ouvert le navigateur. eu la moindre idée? merci.
OriginalL'auteur davidlee | 2010-07-02
Vous devez vous connecter pour publier un commentaire.
Je vous suggère de faire quelque chose comme ceci:
Supposons que lorsque l'utilisateur "A" loges-en à la "Com_1", pour la première fois. Enregistrer un code unique dans la base de données à l'encontre de cette session, et même avec la session de l'utilisateur.
À la moyenne des temps si il (l'utilisateur "A") loges à nouveau sur "com_2", puis vérifier son statut dans la base de données et mettre à jour le code unique dans la base de données.
de nouveau de retour si même utilisateur ("Un") actualise la page sur "com_1", nous avons tout ce que vous devez faire est de vérifier le code unique de la session et le faire correspondre à la base de données, C'est pour s'assurer qu'il n'aura pas de match, puis de l'enregistrer et de détruire la session.
Pour garder l'utilisateur loggedin, même si le navigateur est fermé, vous pouvez stocker le cookie sur le navigateur, et re-générer la session accoordingly.
Espère que cette aide. Merci.
OriginalL'auteur Chetan Sharma
Vous pouvez utiliser l'algorithme suivant
invalidate()
la session et décrémenter la valeur dans la base de donnéesCrédits à Bozho parce qu'il a posté, répondant à une question
ici
pourquoi pas, quel est le problème?
Cet algorithme peut ne pas être suffisant. La théorie est parfait, mais dans la pratique, cela ne fonctionnera pas si le navigateur enregistre la session dans un cookie et restaure. Jetez un oeil à l'Étape 2. Si, comme je l'ai dit, le parcourir restaure la session automatiquement, il ne passe pas à travers toute LoginHandler ou LoginMethod ou tout contrôlable place pour effectuer l'incrément de ce drapeau. Comment agir dans ce cas?
OriginalL'auteur pakore
Garder une centrale de la table de base de données ou un fichier texte qui est connecté en ce moment. Si un utilisateur est déjà connecté dans une autre session, la nullité de cette session par la définition de la "connecté" drapeau " pour de faux.
Bon point, qui va mettre à jour la réponse un peu. Les deux choses sera facilement possible de le faire avec un registre central.
merci pour la réponse. Mon idée n'est pas d'empêcher la nouvelle connexion, cependant, est de détruire la session existante si nouvelle connexion par le même utilisateur est trouvé sur différents navigateur sur le même ordinateur ou sur n'importe quel navigateur sur un autre ordinateur. merci.
cela peut être fait à l'aide d'un registre central où vous pouvez garder une "connecté" drapeau pour chaque session. Aussi loin que je peux voir, les réponses fournies contour de bons moyens pour y arriver. Je pense que vous avez besoin d'aller plus dans le détail ce qui ne fonctionne pas pour vous.
OriginalL'auteur Pekka 웃
Je pense que vous avez à faire quelque chose comme ça :
OriginalL'auteur Arkh
Enregistrer IP de l'utilisateur=>SESSION_ID paires dans une base de données. Lorsque l'utilisateur essaie de charger la page, vous devez comparer les IP=>SESSION_ID paire puis autoriser/refuser si la paire est ok/différents.
OriginalL'auteur fabrik