Espace membre - détection de connexions multiples

Discussion dans 'Administration d'un site Web' créé par leica69, 28 Septembre 2009.

  1. leica69
    leica69 Nouveau WRInaute
    Inscrit:
    25 Octobre 2004
    Messages:
    47
    J'aime reçus:
    0
    Bonjour,
    je suis en train de développer un site qui aura un espace membre. Jusque là tout est OK: BDDet vérification login/pass, passage dans les variables des SESSION,...

    L'accès au service membre est payant et je souhaiterais éviter que les utilisateurs ne distribuent leur identifiants à leurs amis.
    Ce que je que je souhaite implémenter, c'est une détection de connexions multiples. Identifier si deux connexions sont simultanées avec le même compte mais deux IP différentes. Si c'est le cas, je déconnecte le premier en lui envoyant un messages "Connexion multiple....".

    Je récupère:
    - l'IP de l'utilisateur avec $ipClient = $_SERVER['REMOTE_ADDR'];
    - l'ID de l'utilisateur via ma BDD $_SESSION['user_id'] = ...;

    Là je coince, comment comparer les IP de deux sessions différentes qui seraient associées au même compte, sans surcharger le site avec de trop nombreuses reuêtes à la BDD.

    Merci d'avance pour votre aide,
    Antonio
     
  2. 5_legs
    5_legs WRInaute passionné
    Inscrit:
    30 Avril 2006
    Messages:
    1 521
    J'aime reçus:
    0
    Bonsoir,

    Je pense que pour toi la question semble claire parce que tu as la tête dedans, mais

    - l'ID de l'utilisateur via ma BDD $_SESSION['user_id'] = ...

    Est confus.

    Peut-être pourrais-tu expliquer le schéma fonctionnel parce que je n'arrive pas à comprendre (oui je sais je ne suis pas une référence) :)
     
  3. Panoramix
    Panoramix WRInaute passionné
    Inscrit:
    1 Février 2007
    Messages:
    1 112
    J'aime reçus:
    0
    Curiosité: pourquoi mets-tu en place un accès au service membre payant?
     
  4. leica69
    leica69 Nouveau WRInaute
    Inscrit:
    25 Octobre 2004
    Messages:
    47
    J'aime reçus:
    0
    Une partie des services proposés par le site Internet sera payant et de ce fait, réservé aux membres.

    Pour les pages dont l'accès est limité, l'utilisateur doit être logué (identifié). Je fais une vérification dans la BDD. Si le login et le mot de passe correspondent, je mets une variable de session avec le No de l'utilisateur: $_SESSION['user_id']. Cette variable de session sera utile tout le long de l'utilisation du site.

    je veux pouvoir détecter si plusieurs personnes sont loguées en même temps, en tant que même utilisateur. En passant par $_SESSION['user_id'] + les adresse IP, les identifiants de session, ou autre solution.
    Par exemple (et juste pour l'exemple), si ma grand-mère s'inscrit, je ne veux pas qu'elle donne ses login/pass à tout son club de tricot. Je sais que ça ne l'empêchera pas de le faire, mais, si elle se fait déconnecter quant des copines sont aussi en ligne, ça pourra la motiver à cesser de partager l'info. [et non, je n'ai rien contre ma grand-mère].

    J'espère avoir été plus clair et que vous pourrez me donner une piste de développement.
    Antonio
     
  5. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    si c'est juste éviter que 2 personnes utilisent le même code en même temps il te suffit d'ajouter un champs avec une date/heure de dernière connection et de considérer qu'au delà de 30' par exemple, le champ ne sera plus valable.
     
  6. Panoramix
    Panoramix WRInaute passionné
    Inscrit:
    1 Février 2007
    Messages:
    1 112
    J'aime reçus:
    0
    5 secondes après la connexion réussie: essaye de te logguer en 5 secondes avec une autre fenetre ouverte...
     
  7. leica69
    leica69 Nouveau WRInaute
    Inscrit:
    25 Octobre 2004
    Messages:
    47
    J'aime reçus:
    0
    Si je fais une vérification de l'identification sur chacune de mes pages "membres", le dernier chargement de la page mettra à jour le champ "dernière connexion", la navigation sera possible par deux utilisateurs.
    Je fais déjà ce genre de vérification pour mettre fin a une session inactive: si la personne ne navigue pas pendant plus de 15 minutes, il sera déconnecté.
     
  8. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    et dans l'intervalle dernière connexion à dernière connexion+30', tu interdits la connexion avec un autre id de session (transmis via cookie), voire, éventuellement, une autre ip
     
  9. leica69
    leica69 Nouveau WRInaute
    Inscrit:
    25 Octobre 2004
    Messages:
    47
    J'aime reçus:
    0
    Si j'ai bien compris.
    L'utilisateur se logue: via le formulaire login/pass: -> j'enregistre la SESSION_ID dans la BDD

    Lors du chargement de chaque page protégée, je vérifie le temps écoulé depuis la dernière connexion:
    Plus de 30 minutes: Session inactive -> déconnexion
    Moins de 30 minutes: je compare les SESSION_ID:
    - c'est les mêmes -> tout va bien, on continue
    - elles sont différentes (car une autre connexion a eu lieu entre temps) -> je déconnecte

    Ca semble cohérent? Je n'oublie rien?
     
  10. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    ça parait cohérent
     
  11. leica69
    leica69 Nouveau WRInaute
    Inscrit:
    25 Octobre 2004
    Messages:
    47
    J'aime reçus:
    0
    Bonjour,
    j'ai testé et ça fonctionne correctement. J'ai juste un (gros) souci avec Opera et Chrome.

    La structure de mes pages est la suivante:
    Code:
    Logo
    -------
    Menu
    ------
    ** Si le membre est connecté: un menu membre **
    ------
    Contenu de mes pages
    Mon souci est que les pages affichées sont celles du cache du navigateur et non celles qui sont générées par le serveur. J'explique:
    Quand un utilisateur "membre" est logué, il a un menu spécifique qui s'affiche sur toutes les pages (dans ma structure, ce qui est entre les **).
    Quand il ferme sa session ou qu'il est kické, les pages qu'il a déjà visitées s'affichent avec le menu membre. Si j'actualise la page (F5), tout redevient normal, sans le menu membre.

    Auriez-vous une idée pour résoudre ce problème? Existe-t-il un moyen de ne pas mettre les pages en cache?

    D'avance, merci.
    Antonio
     
  12. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 974
    J'aime reçus:
    121
    Comment gères-tu la déconnexion ?
     
  13. leica69
    leica69 Nouveau WRInaute
    Inscrit:
    25 Octobre 2004
    Messages:
    47
    J'aime reçus:
    0
    Code:
    $no_session_courante = session_id();
    
    $sql_session = "SELECT count(id) FROM t_membres WHERE id='".$_SESSION['user_id']."' AND membre_session_id='".$no_session_courante."'";
    $req_session = mysql_query($sql_session) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $ligne_session = mysql_fetch_row($req_session);
    mysql_free_result($req_session);
    
    if ($ligne_session[0] != 1) {
    	//Conflit de SESSION
    	unset($_SESSION['last_access']);
    	unset($_SESSION['user_id']);
    	session_unset();
    	session_destroy();
    	
    	header("Location: erreur.php?e=2");
    }
     
Chargement...
Similar Threads - Espace membre détection Forum Date
Youtube privé associé à l'espace membre de mon site ? YouTube, Google Images et Google Maps 20 Août 2020
Admob sur une application/site avec espace membre AdSense 21 Octobre 2019
Contenu différent pour une même URL (espace membre) Problèmes de référencement spécifiques à vos sites 31 Octobre 2018
indexer des pages url rewriting dans un espace membre Débuter en référencement 5 Novembre 2015
Adsens dans un espace membre AdSense 5 Août 2015
Mentions légales et espace membre Droit du web (juridique, fiscalité...) 28 Janvier 2014
Quel script (forum ou réseau social) pour ajouter un espace membre à mon site Développement d'un site Web ou d'une appli mobile 14 Août 2011
Espace membre, sessions et sécurisation en PHP Développement d'un site Web ou d'une appli mobile 12 Août 2010
Création espace membre site+blog : Wordpress? Développement d'un site Web ou d'une appli mobile 5 Août 2010
Espace membre PHP : stockage mot de passe et email, cryptage? Développement d'un site Web ou d'une appli mobile 29 Juin 2010
Cherche CMS avec espace membre et galeries Développement d'un site Web ou d'une appli mobile 8 Mars 2010
Solution pour un espace membre Développement d'un site Web ou d'une appli mobile 4 Février 2009
Script d'espace membre Développement d'un site Web ou d'une appli mobile 12 Septembre 2008
optimisation d'espace membre Débuter en référencement 18 Août 2008
Quel est le meilleur script php pour un espace membre? Développement d'un site Web ou d'une appli mobile 28 Décembre 2007
Créer un espace membre protégé par .htaccess Développement d'un site Web ou d'une appli mobile 20 Décembre 2007
Proposer un espace à ses membres Développement d'un site Web ou d'une appli mobile 17 Janvier 2007
Espace membre Administration d'un site Web 27 Décembre 2006
espace "membres" Débuter en référencement 9 Décembre 2006
Ne pas indexer les pages d'un espace membre Développement d'un site Web ou d'une appli mobile 13 Novembre 2006