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

 Firebird Discussion :

[FB] Empêcher la connection de deux utilisateurs identiques


Sujet :

Firebird

  1. #1
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut [FB] Empêcher la connection de deux utilisateurs identiques
    Bonjour,

    J'ai réaliser une application mutli-utilisateurs et multi-postes. Je souhaiterais de toute connection à la base de données requiert un utilisateur non déjà connecté.

    Je crois qu'un exemple évitera de long discours plus ou moins compréhensibles ( )

    Soient trois PC : A, B et C.
    et 3 utilisateurs différents (pseudo+password) : 1,2 et 3.

    Supposons maintenant que 1 se connecte sur A et 2 sur B.
    Je souhaiterai alors que toute personne sur C ne puisse utiliser les pseudo 1 ou 2 pour se connecté (normale car déjà en ligne).

    Comment attribuer un accès unique par pseudo/password à la base de donnée ?

    merci,

    [Edit]PS : je suis encore débutant dans FireBird ... mais je progresse [/Edit]
    CV :
    - LinkedIn
    - Viadeo

  2. #2
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Moi, j'ai bidouillé comme ceci .
    J'ai utilisé une Table UTILISATEUR et quand je me logue, j'insere une ligne avec les infos NOM, DATE_CONNECT, HEURE_CONNECT. Une fois que je quitte, j'efface la ligne.
    Ce qui est chiant c'est que si l'appli client se plante, la ligne reste. Donc, a partir de la DATE_CONNECT et HEURE_CONNECT, je verifie si c'etais du à une panne ou non.

    A+
    On progresse .....

  3. #3
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    merci pour cette réponse si rapide

    J'avais pensé à quelque chose comme cela, mais il y a un problème :
    Le logiciel doit fonctionner sur plusieurs parc informatique allant de 3 PC à 10 PC sans administrateurs.
    Or les (futurs) clients sont loin d'être des pros et leurs PC ont la facheuse tendance à planter. N'arrivant pas à les convaincre de réinstaller Windows, et sachant qu'un utilisateur peut se connecter plusieurs fois par jour et d'une durée très variable, je cherche une solution un peu plus fiable.

    Je me demandais éventuellement s'il était possible de retourner tous les utilisateurs en ligne (puisque je crois qu'il est possible de renvoyer le nombre de connecté). Comme cela, l'utilisateur se verra attribuer la connection s'il n'est pas présent dans la liste.

    Je garde ta solution en réserve mais je souhaiterais quelque chose plus adapté aux besoins.

    merci
    CV :
    - LinkedIn
    - Viadeo

  4. #4
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Citation Envoyé par Andry
    Moi, j'ai bidouillé comme ceci .
    J'ai utilisé une Table UTILISATEUR et quand je me logue, j'insere une ligne avec les infos NOM, DATE_CONNECT, HEURE_CONNECT. Une fois que je quitte, j'efface la ligne.
    Ce qui est chiant c'est que si l'appli client se plante, la ligne reste. Donc, a partir de la DATE_CONNECT et HEURE_CONNECT, je verifie si c'etais du à une panne ou non.

    A+
    Dans son cas il peut compléter sa table avec l'ID du poste (l'IP si c'est un reseau avec IP fixe par exemple).

    Lors de le connexion on verifie que l'utilisateur n'existe pas dans la table, s'il existe on regarde l'ID du poste si c'est le même alors on update date_connect, heure_connect sinon on refuse le connexion.
    Lors de la deconnexion on efface la ligne de l'utilisateur.

    Ainsi on empèche la multiconnexion à partir de plusieurs postes.
    En cas de plantage, il faut que l'utilisateur se reconnecte en utilisant le même poste pour ne pas être bloquer (ou ajouter un traitement de verification de date/heure comme a du faire ANDRY)

    Voilà mais sinon il me semble qu'on peut récuppérer la liste des USER connectés, faudrait que je regarde.

  5. #5
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    L'idée est intéressante
    merci,

    Je vais tenter une recherche tout de même sur la liste des USERS connectés (mais étant débutant...).
    CV :
    - LinkedIn
    - Viadeo

  6. #6
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    TIBDatabaseInfo de la palette Interbase (Delphi ou BC++)
    A une propriété UserNames qui est une TStringList contenant la liste des utilisateurs connectés à la base.

    Extrait de la doc Delphi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var
      I: Integer;
    begin
     with IBDatabaseInfo1 do
      begin
        for I := 0 to UserNames.Count - 1 do
          Memo1.Lines.Add(UserNames[I]);

  7. #7
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    Super merci

    Je n'aurais jamais pensé que cela soit aussi simple
    Je tente cela et je vous tiens au courant.

    encore merci !
    CV :
    - LinkedIn
    - Viadeo

  8. #8
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    Cela marche à la perfection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    var
      suser, spass : string;
      nbConnection, i : integer;
     
    ....
      nbConnection := 0;
      // saisie du pseudo et mot de passe
      suser := InputBox('user','','');
      spass := InputBox('pass','','');
     
      // connection
      with DM.IBDB do
      begin
        Params.Clear;
        Params.Add('user_name='+suser);
        Params.Add('password='+spass);
        Params.Add('lc_ctype=ISO8859_1');
        Connected := True;
        // il est nécessaire d'ouvrir la BD pour vérifier les connections
      end;
     
      // vérification du nombre de connection de l'utilisateur suser
      with DM.IBDatabaseInfo1 do
      for i := 0 to UserNames.Count-1 do
      begin
        if SameText(suser,UserNames[i]) then
          Inc(nbConnection);
      end;
     
      if (nbConnection > 1) then begin // si plus d'une connection
        ShowMessage('déjà connecté');
        // traitement en cas d'utilisateur déjà présent.
        Exit; 
      end;
    Un seul bémol, faire attention aux nombres de connection demandé par le logiciel et modifier en conséquent.

    Barbibulle,

    a bientot,
    CV :
    - LinkedIn
    - Viadeo

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

Discussions similaires

  1. Comment avoir deux utilisateurs identiques
    Par gangsoleil dans le forum Linux
    Réponses: 5
    Dernier message: 05/02/2014, 11h29
  2. Réponses: 5
    Dernier message: 07/09/2009, 09h16
  3. [SP-2007] les résultats de recherche ne sont pas identiques pour deux utilisateurs
    Par hassine dans le forum SharePoint
    Réponses: 5
    Dernier message: 07/09/2009, 09h16
  4. [VPN] Connection de deux réseaux
    Par speedy1496 dans le forum Développement
    Réponses: 3
    Dernier message: 14/12/2004, 14h18
  5. Eviter deux nombres identiques dans un tirage aléatoire
    Par moon tiger dans le forum Pascal
    Réponses: 5
    Dernier message: 25/11/2002, 09h57

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