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

Delphi Discussion :

Delphi avec sqlserver


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 51
    Points : 22
    Points
    22
    Par défaut Delphi avec sqlserver
    Bonjour a tous
    Svp comment utiliser la fonction PWDCOMPARE dans un code Delphi pour vérifier le mot de passe tapé par l'utilisateur ???
    Merci beaucoup de m'aider

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Suffit de faire un SQL comme évoque dans la documentation mais sur votre table de Login.
    Au préalable, il faut que les mots de passe dans votre table de Login de la base de donnée soit encryptées via PWDENCRYPT.

    Essayez quelque chose de basique comme ceci :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT PWDCOMPARE(:pMotDePasse, USERS.Login) FROM USERS WHERE Login = :pUtilisateur
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Expert confirmé Avatar de sergio_is_back
    Homme Profil pro
    Responsable informatique, développeur tout-terrain
    Inscrit en
    Juin 2004
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Responsable informatique, développeur tout-terrain
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 084
    Points : 5 604
    Points
    5 604
    Par défaut
    Citation Envoyé par lokazouzou Voir le message
    Bonjour a tous
    Svp comment utiliser la fonction PWDCOMPARE dans un code Delphi pour vérifier le mot de passe tapé par l'utilisateur ???
    Merci beaucoup de m'aider
    Pour compléter un peu la réponse de ShaiLeTroll : PWDCOMPARE est une fonction SQL de SQLSERVER, dans Delphi cette fonction doit être utilisée via un objet descendant de TDataset, donc une classe de type TFDQuery, TAdoQuery ou autre... Qui sera lié à la connexion vers le serveur MSSQL

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Ah oui, je n'avais pas pensé à ce prérequis, je me suis dit que si l'on s'intéresse à la sécurité des mots de passe, on avait déjà dépassé de loin la phase du choix de la bibliothèque d'accès, de la connexion et de l'utilisation de requête

    Et si l'on n'a pas encore décidé quel descendant choisir, on peut aussi le faire à la main avec les objets ADO en OLE
    J'ai fait cela dans le cadre d'une comparaison de performance entre TADOQuery et la couche que ce dernier utilise (j'ai trouvé une lenteur sur le Fetch en adUseClient + adOpenKeyset sur le TADOQuery)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            FCnx: Variant;
            FCmd: Variant;
            FRec: Variant;
            FPrm: Variant;
            ...
            FFields: array of Variant;
          public
            procedure OpenConnection(const APassword: string);
            ...
          end;
    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
     
    //------------------------------------------------------------------------------
    procedure ....OpenConnection(const APassword: string);
    begin
      FCnx := System.Win.ComObj.CreateOleObject('ADODB.Connection');
      FCnx.Open(GetConnectionString() + ';Password='+APassword);
     
      FCmd := System.Win.ComObj.CreateOleObject('ADODB.Command');
      FCmd.ActiveConnection := FCnx;
      FCmd.CommandType := Winapi.ADOInt.adCmdText;
     
      FRec := System.Win.ComObj.CreateOleObject('ADODB.Recordset');
      FRec.CursorLocation := Winapi.ADOInt.adUseClient;
      FRec.CursorType := adOpenKeyset;
      FRec.LockType := adLockOptimistic;
    end;
    Le code ci-dessus est un agrégé, c'est à titre d'exemple que ce n'est pas si compliqué d'utiliser ADO en OLE sans le TADOQuery et encore c'est Late Binding un peu plus chiant que le Early Binding.
    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
     
        Query.FCmd.CommandText := 'SELECT ... FROM ... WHERE ... = ?';
     
        Query.FRec.CursorLocation := Winapi.ADOInt.adUseClient;
        Query.FRec.CursorType := Winapi.ADOInt.adOpenKeyset;
     
        Query.FPrm := Query.FCmd.CreateParameter;
        Query.FPrm.Direction := adParamInput;
     
        Query.FPrm.Type := adVarChar;
        Query.FPrm.Size := Length(VarToStr(Value));
        Query.FPrm.Value := Value;
     
        Query.FCmd.Parameters.Append(Query.FPrm);
     
        Query.FRec.Open(Query.FCmd);
     
        while not Query.FRec.EOF do
        begin
             for I := 0 to Query.FRec.Fields.Count - 1 do
                 ShowMessage(Query.FFields[I].Value);
             Query.FRec.MoveNext;
        end;        
        Query.FRec.Close;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/02/2010, 11h00
  2. deploiement d'une application delphi avec BD Sqlserver 2000
    Par langex dans le forum Bases de données
    Réponses: 5
    Dernier message: 03/08/2007, 18h27
  3. Problème de compatibilité de types avec Delphi et SQLServer
    Par scrat88 dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/05/2006, 11h31
  4. SVP prob Delphi avec interbase
    Par Riri394 dans le forum Bases de données
    Réponses: 6
    Dernier message: 14/06/2004, 16h35
  5. Création d'agrégat avec SQLServer
    Par Testav dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 19/09/2002, 16h54

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