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

PHP & Base de données Discussion :

Cmt matcher le form de login avec champ codé grace a Function Password -


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 212
    Par défaut Cmt matcher le form de login avec champ codé grace a Function Password -
    Bonjour,
    Afin de sécurise la base, j'ai decidé d'utiliser la fonction password sur le champ password lorsqu'un utilisateur cré un compte.
    Dans la base les password sont bien encodé.

    Le souci c'est que l'utilisateur ne parviens plus à se connecter. J'ai l'impression que le formulaire de login tient compte du pass codé et ne retrouve plus le code d'origine (non codé). Par consequent j'ai rajouté la fonction Password sur le champ Password du formulaire en pensant qu'il ferait la correspondance mais ca ne marche pas.

    Voici la requete qui teste le form.

    Existe-t-il une solution ?
    Peut être je m embete pour rien car il n'est peut etre pas dangereux de les password tel quel dans la base ?

    Enfin voila je vous remercie pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //Préparation de la requête
    $query = "SELECT ID_Patient FROM T_Patients 
    WHERE Login='$user_login' AND Password=Password('$password')";

  2. #2
    Membre éprouvé Avatar de kazhar
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut
    Dans ton cas, ce qui est passé à mysql, c'est pas ton password, mais la fonction password.
    Donc, tu doit avoir une erreur sql car celle-ci n'existe pas.

    Essaye comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //Préparation de la requête
    $query = 'SELECT ID_Patient FROM T_Patients 
    WHERE Login='$user_login' AND Password='.Password('$password');

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 212
    Par défaut
    Ca me met un message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Parse error: syntax error, unexpected T_VARIABLE
    sur la ligne de la requete.


    MErci de ton aide

  4. #4
    Membre éprouvé Avatar de kazhar
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut
    Pardon, j'avais zappé les ' avant
    Il faut que tu ajoute des ' dans les champs de ta requete qui sont censés en avoir, et que tu ferme les ' pour afficher des variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //Préparation de la requête
    $query = 'SELECT ID_Patient FROM T_Patients 
    WHERE Login=\''.$user_login.'\' AND Password='.Password('$password');

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 212
    Par défaut
    Merci de ton aids mais j'ai encore une erreur ; désolé.

    Voici l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Call to undefined function: password()
    Apparemment il ne connait pas cette fonction.

  6. #6
    Membre éprouvé Avatar de kazhar
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut
    Euh oui, elle n'est pas implémentée dans le noyau php.
    Je pensais qu'il s'agissait de ta fonction qui encodait ton mot de passe.

    Il faut que tu la crée et que tu encode ton mot de passe dedans.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 212
    Par défaut
    OK.
    Mais en fait, je parviens bien à crypter le password.
    La fonction d'insertion et meme d'update fonctionne parfaitement.

    Problème
    Dans la base le password saisie par l'utilisateur (Ex = 15) devient AERJHGIDGD (crypté par la function Password).

    Et dans le formulaire de connection si l'utilisateur tape 15 ca ne marche pas.
    Il faudrait qu'il tape AER... pour faire le matching.

    Ma question :
    Est il possible de pouvoir faire le matching sur 15 malgré que le password dans la base soit crypté. Existe -il une fonction special.
    Le code précedent correspond justement à ce formulaire de connection.

    Voila merci pour ton aide et bonne continuation.

  8. #8
    Membre éprouvé Avatar de kazhar
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut
    Si tu encrypte le mot de passe tapé de la même manière que tu le fait lorsque tu insert ou update alors, les deux seront similaires.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 212
    Par défaut
    C'est ce que j'essayé de faire en faisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //Préparation de la requête
    $query = "SELECT ID_Patient FROM T_Patients 
    WHERE Login='$user_login' AND Password=Password('$password')";
    sachant que $password' contient le password taper dans le formulaire de connection

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 212
    Par défaut
    Je suis peut etre obigé d'utilisé une table qui me renvoie la correspondance du cryptage.

  11. #11
    Membre éprouvé Avatar de kazhar
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut
    La solution que je t'ai donné, si tu remplace la fonction Password() par une fonction qui te retourne ton mot de passe encodé devrait fonctionner ...

    En effet, tu encode ton mot de passe pour le passer à ta requete sql.
    Donc, si le mot de passe tapé est correct, il sera équivalent à celui entré dans la base de données.

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 212
    Par défaut
    Oui mais quel fonction ?

    Password dans l'absolu devrait marcher puisqu elle utilise le meme cryptage

  13. #13
    Membre éprouvé Avatar de kazhar
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut
    Mais la, elle n'est pas définie.
    Je ne sais pas comment tu crypte ton mot de passe, ni comment et ou tu définit ta fonction de cryptage.
    Mais si tu la définit dans un autre document, il faut que tu l'inclue.

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 212
    Par défaut
    Le cryptage du mot de passe se fait par l'intermediaire de la fonction
    PASSWORD lors de la création du compte par l'utilisateur (dans la requet d'insert)

  15. #15
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Si ton champ password est un string du dois mettre des quotes :

    Password='Password('$password')'

    Bye

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 212
    Par défaut
    Merci de ton aide mais j'ai un problème de quote il y a une erreur

    Le champ est en varchar(11)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    $query = "SELECT ID_Patient FROM T_Patients 
    WHERE Login='$user_login' AND Password='Password('$password')'";

  17. #17
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Euh en effet avec PASSWORD il semblerait que tu n'aies pas besoin des quotes, désolé pour l'erreur

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 212
    Par défaut
    Bon je laisse tomber. Je verrais ca au plus tard.

    Je vous remercie pour votre aide.

    Tres cordialement.

  19. #19
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Extrait de la doc :

    Note : La fonction PASSWORD() est utilisée durant l'identification au serveur MYSQL. Il est recommandé de ne pas l'utiliser pour vos applications. Utilisez plutôt MD5() ou SHA1(). Voyez aussi RFC-2195 pour plus d'informations sur comment gérer les mots de passe et l'identification de votre système.
    Donc en fait tu pourrais utiliser MD5() de SQL pour l'insertion et md5() de PHP pour ton SELECT.

    [edit]L'algo MD5 ne semble plus être conseillé pour des nouvelles applis[/edit]

    Bye

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 212
    Par défaut
    Merci pour l'éclairage.

    Bonne continuation.

Discussions similaires

  1. Création login avec Forms
    Par ulysse031 dans le forum Forms
    Réponses: 5
    Dernier message: 04/10/2012, 11h52
  2. Envoi d'un form avec champs disabled
    Par Ekik dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/03/2006, 14h58
  3. [stringtokenizer] probleme avec champs vides
    Par gege2mars dans le forum Langage
    Réponses: 9
    Dernier message: 30/06/2004, 09h25
  4. Pb de tri avec champs vide
    Par Invité dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2004, 18h42
  5. fenêtre avec champs éditables
    Par LFC dans le forum Windows
    Réponses: 2
    Dernier message: 13/09/2003, 13h35

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