2010-09-22 8 views
1

Une fonctionnalité qui manque actuellement dans l'une de mes applications Web est qu'un seul utilisateur ne peut être connecté que sur une machine à la fois. Autrement dit, si les utilisateurs se connectent ailleurs, la session précédente sera déconnectée.Structure de la base de données des utilisateurs qui permet plusieurs connexions simultanées au même compte

Cela est dû à ma table actuelle des utilisateurs ayant les colonnes:

user: id, username, hash, salt... cursession 

Lorsque chaque utilisateur se connecte, l'ID de session est placée dans le champ « cursession » et sur chaque chargement de la page, est cochée contre la base de données. Par conséquent, une seule "session" peut être active à la fois.

  1. La structure et le procédé de la table actuelle sont-ils sécurisés et standard? Ce système a été plutôt improvisé et je n'ai aucune expérience professionnelle.
  2. Quel serait un moyen d'autoriser plusieurs connexions simultanées? Je pense simplement à ajouter une table "sessions" avec plus de relations userid-curseurs, mais quelle est la méthode standard pour le faire?

Répondre

1

Je propose que vous mettez le courant connecté à userid dans la session de l'utilisateur (comme une variable de session) et déposez le champ cursession de la table tout à fait. Vous n'avez pas besoin de réinventer la gestion de session puisque PHP l'a déjà intégré.

De cette façon, l'utilisateur peut être connecté sur plusieurs ordinateurs à la fois. Les variables de session sont également sécurisées, car elles ne sont pas manipulées par le navigateur. La seule chose conservée dans le navigateur est un identifiant de session qui identifie la session en cours, toutes les autres données sont stockées côté serveur. La seule chose qui arrivera si l'utilisateur change ses cookies de navigateur, c'est qu'il sera déconnecté (démarrer une session vide), donc il ne peut pas se forcer à se connecter comme quelqu'un d'autre.

+0

Désolé, mais je ne suis pas clair à ce sujet. Voulez-vous simplement stocker l'ID utilisateur dans le cookie de session? Si oui, comment vous assurez-vous que le cookie est authentique? EDIT: peu importe, je l'ai. Utilisez simplement $ _SESSION ['userid'] = x – phsource

Questions connexes