IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Limiter à un connexion sur un même compte


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de bricechris
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 47
    Points : 57
    Points
    57
    Par défaut Limiter à un connexion sur un même compte
    Bonjour à tous,

    Alors voilà mon affreux problème :

    Je n'arrive pas à limiter la connexion sur un même compte à une seule. C'est-à-dire que si "Jean-jean" est connecté, alors si on cherche à se connecter avec son même identifiant & mdp, ça affichera erreur. Bref, comme sur un forum (celui par exemple).

    Si je poste dans la partie SESSIONS du forum, c'est parce que ma technique pour y arriver était d'ouvrir une session pour celui ayant bien entré l'identifiant & mdp pour le membre jean-jean, en vérifiant dans la bdd que tout est ok.

    Mais ça ne limite pas à un le nombre de personnes sur un même compte, évidemment.

    Comment puis-je faire ? Merci.
    Méthode Bonaparte : méthode de gestion de classe pour profs lambda, leur permettant de réussir à avoir le calme dans leurs cours et le respect de leurs élèves. Sinon, un blog de citations sur l'école.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ton problème pose celui de tracer le départ d'un utilisateur ... sujet difficile.
    Démonstration :
    - je me connecte, je surf et je ferme mon navigateur
    - avec mon ordinateur portable maintenant je veux me connecter sur le site.
    Qu'est ce qui me differencie d'un autre utilisateur ? Je ne devrais plus pouvoir me connecter.

    Donc pour bien te répondre il faudrait savoir très précisemment ce que tu cherches a empecher.

    Sur un forum comme ici, on peut se connecter plusieurs fois.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club Avatar de bricechris
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 47
    Points : 57
    Points
    57
    Par défaut
    Je me suis peut-être mal exprimé - et c'est même d'ailleurs fort possible vu que j'arrive pas à mettre les bons mots sur mon problème, alors qu'il est pourtant clair dans ma tête.

    Mon problème ne me semble pas très difficile vu qu'énormément de sites ont ce système.

    Je veux tout simplement qu'on ne puisse pas être plus de un sur un compte en même temps. Un compte = un utilisateur. Je vous donne un exemple concret :

    Je vais sur amazon.fr et je m'identifie. Je suis à présent connecté à mon compte. Maintenant, si un type sur un autre ordi cherche à se connecter avec mes propres identifiants sur amazon.fr, on lui affichera : "Un utilisateur est déjà connecté à ce compte".
    Méthode Bonaparte : méthode de gestion de classe pour profs lambda, leur permettant de réussir à avoir le calme dans leurs cours et le respect de leurs élèves. Sinon, un blog de citations sur l'école.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ma réponse reste la même : La difficulté est de detecter les utilisateur deconnectés : une solution est de suivre les activités de l'utilisateur sur ton site et d'enregistrer dans ta table les heures d'activité : tout utilisateur sans activité depuis X secondes est consideré comme deconnecté et à le droit de se connecter à nouveau.
    Tout utilisateur ayant eu une activité dans les X secondes et consideré comme déjà connecté et ne peux plus le refaire.

    Ce verrou implique bien entendu qu'un utilisateur qui ferme son navigateur ne pourra pas immédiatement se reconnecter.
    On peut assouplir la chose en autorisant l'utilisateur a se connecter s'il a la meme IP que la précédente connexion.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club Avatar de bricechris
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 47
    Points : 57
    Points
    57
    Par défaut
    Merci pour ta réponse, sabotage. Mais ce que tu recommandes me paraît un poil au-delà de mes compétences. Je ne fais que débuter avec les bdd et & les sessions.

    Voilà de mon côté ce que j'ai trouvé :
    - Je me connecte à mon compte.
    - Une session s'ouvre, m'authentifiant comme détentrice du compte.
    - La variable "connect" dans ma table de bdd passe à 1.

    - Si qqun d'autre tente de se connecter à mon compte alors que je le suis déjà, il ne pourra pas car la variable "connect" est à 1.

    - Si je me déconnecte, je fais passer la variable "connect" à 0.

    Mon problème en l'occurrence dans ce cas précis est que lorsque la session expire toute seule, ou que je quitte le site sans cliquer sur déconnexion, la variable "connect" restera à 1.

    Ce qui fait que lorsque je chercherai à me reconnecter, je ne pourrais pas car elle sera restée sur 1, croyant que je serai toujours connecté...
    Méthode Bonaparte : méthode de gestion de classe pour profs lambda, leur permettant de réussir à avoir le calme dans leurs cours et le respect de leurs élèves. Sinon, un blog de citations sur l'école.

  6. #6
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Salut

    Sinon tu peux toujours rajouter un champs date dans ta table associé et ta variable connect qui s'acualise à chaque action (par ex: date de l'action + 20min). Si l'utilisateur part sans cliquer sur deconnexion, alors le compte restera inactif pendant 20min puis redeviendra actif (si connect = 1 et date_actuelle > date_base + 20m)

  7. #7
    Membre du Club Avatar de bricechris
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 47
    Points : 57
    Points
    57
    Par défaut
    Evidemment, 20mn de durée de session n'est clairement pas suffisant. Il faudrait au moins quelque chose comme 1h, au bas mot.

    Ton idée ne marcherait pas dans ce cas puisque si l'utilisateur quitte Internet sans se déco, sa session disparait, mais mon site continue à le considérer comme toujours connecté. Ce qui fait que s'il chercherait à rejoindre le site, non seulement il serait déco, mais en plus il ne pourrait plus se reco..

    Vraiment, comment ils font les forums ou les sites de vente en ligne ?
    Méthode Bonaparte : méthode de gestion de classe pour profs lambda, leur permettant de réussir à avoir le calme dans leurs cours et le respect de leurs élèves. Sinon, un blog de citations sur l'école.

  8. #8
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Citation Envoyé par bricechris Voir le message
    Evidemment, 20mn de durée de session n'est clairement pas suffisant. Il faudrait au moins quelque chose comme 1h, au bas mot.

    Ton idée ne marcherait pas dans ce cas puisque si l'utilisateur quitte Internet sans se déco, sa session disparait, mais mon site continue à le considérer comme toujours connecté. Ce qui fait que s'il chercherait à rejoindre le site, non seulement il serait déco, mais en plus il ne pourrait plus se reco..

    Vraiment, comment ils font les forums ou les sites de vente en ligne ?
    Non tu n'as pas compris

    Cas 1: l'utilisateur se connecte avec ta variable $connect à 0 dans ta base
    => tout marche bien. Tu mets un champs $last_action à time() dans ta base. A chaque action qu'il fait, tu vérifies que time() - $last_action < 3600 (1h) et si oui tu update $last_action à time() et non tu le kickes du site si tu veux.

    Cas 2: l'utilisateur se connecte avec ta variable $connect à 1 dans ta base et time() - $last_action > 3600 => tu le deconnectes

    Voilà c'est tout simple

  9. #9
    Membre du Club Avatar de bricechris
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 47
    Points : 57
    Points
    57
    Par défaut
    Ah d'accord, je vois mieux.

    Cependant je réitère mon objection : si je suis connecté à mon compte et que par mégarde mon ordi se reboot, on est d'accord que ma session va disparaître aussitôt ?

    Ce qui fait que lorsque je voudrais revenir sur mon compte, je ne pourrais pas car elle n'aura pas encore expirée. Et moi n'ayant plus la session, je serai forcé d'attendre...
    Méthode Bonaparte : méthode de gestion de classe pour profs lambda, leur permettant de réussir à avoir le calme dans leurs cours et le respect de leurs élèves. Sinon, un blog de citations sur l'école.

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je t'ai déjà donné une solution
    On peut assouplir la chose en autorisant l'utilisateur a se connecter s'il a la meme IP que la précédente connexion.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre du Club Avatar de bricechris
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 47
    Points : 57
    Points
    57
    Par défaut
    Oui, effectivement, c'est une solution.

    Mais est-ce que ça ne risque pas d'être un peu tendu pour les utilisateurs qui ont des IP changeantes à chaque nouvelle connexion de leur modem ?
    Méthode Bonaparte : méthode de gestion de classe pour profs lambda, leur permettant de réussir à avoir le calme dans leurs cours et le respect de leurs élèves. Sinon, un blog de citations sur l'école.

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux contrôler que c'est l'utilisateur en lui placant un cookie dont la valeur est egalement enregistré dans la base si tu préfères.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Limiter les connexions sur un module
    Par steph56sc dans le forum SAGE
    Réponses: 4
    Dernier message: 21/06/2013, 13h32
  2. Interdire une deuxième connexion avec le même compte
    Par eprevot dans le forum Langage
    Réponses: 12
    Dernier message: 23/01/2013, 19h07
  3. Réponses: 2
    Dernier message: 20/06/2008, 11h48
  4. Limite de connexions depuis un même host
    Par Kaidan dans le forum IIS
    Réponses: 1
    Dernier message: 22/10/2007, 17h45
  5. [MySQL] Connexion multi-database sur le même serveur
    Par brazza dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/11/2005, 11h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo