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

SQL Procédural MySQL Discussion :

petit problème de mot de passe crypté PASSWORD()


Sujet :

SQL Procédural MySQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2004
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 56
    Points : 32
    Points
    32
    Par défaut petit problème de mot de passe crypté PASSWORD()
    Bonjour à tous

    Voilà, continuant ma découverte de php/mysql, je suis en train d'expérimenter un controle d'accès via USER/MOTDEPASSE en interrogeant la base de donnée : j'ai donc créé deux utilisateurs dans une base de donnée que j'ai appelée auth :
    ...
    insert into auth values
    ('user', 'pass');

    insert into auth values
    ( 'testuser', password('test123') );

    grant select, insert, update, delete
    on auth.*
    to webauth@localhost
    identified by 'webauth';
    Et voici mon script php :

    // connection
    $mysql = mysql_connect( 'localhost', 'webauth', 'webauth' );
    if(!$mysql)
    {
    echo 't'as pas réussi à te connecter, couillon!!!.';
    exit;
    }
    // selection de la bonne database
    $mysql = mysql_select_db( 'auth' );
    if(!$mysql)
    {
    echo 'impossible de se connecter à la database sélectionnée.';
    exit;
    }

    // query the database to see if there is a record which matches
    $query = "select count(*) from auth where
    name = '$name' and
    pass = '$password'";

    $result = mysql_query( $query );
    if(!$result)
    {
    echo 'Cannot run query.';
    exit;
    }

    $count = mysql_result( $result, 0, 0 );

    if ( $count > 0 )
    {
    // visitor's name and password combination are correct
    echo '<h1>Here it is baby!</h1>';
    echo 'I bet you are glad you can see this secret page.';
    }
    else
    {
    // visitor's name and password combination are not correct
    echo '<h1>Go Away! prout</h1>';
    echo 'You are not authorized to view this resource.';
    }
    Le test avec mot de passe nom codé ("user" et "pass" ) fonctionne sans problème, je peux accéder à la page, par contre avec le mot passe codé par la fonction PASSWORD() de mySQL (testuser/test123) j'ai le message comme quoi le "visitor's name and password combination are not correct" alors que si je vais dans phpmyadmin pour copier/coller le mot de passe codé (çà ressemble à çà : 39817a786ddf7333), çà marche...

    J'espère que je me suis bien fait comprendre... En gros : pouvez-vous m'expliquer ce que j'ai fait de mal pour devoir rentrer "39817a786ddf7333" et non "test123" pour passer l'authentification.

    Merci d'avance pour vos réponses

  2. #2
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     $query = "select count(*) from auth where
    name = '$name' and
    pass = '$password'";
    On peut avoir la requête en clair ? Parce là à priori les variables peuvent prendre n'importe quelle valeur
    Pensez au bouton

  3. #3
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    et pourquoi tu fais pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $query = "select count(*) from auth where
    name = '$name' and
    pass = password('$password')";
    :

  4. #4
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    Hello,

    Les deux utilisateurs ne sont pas saisis de la meme facon. Donc il faut choisir si il faut crypter les mot de passe dans la base(utilisation de PASSWORD()) ou s'il ne faut pas(auquel cas pas de PASSWORD()).
    Mais il faut faire pareil pour TOUS les utilisateurs.
    Pensez au tag

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2004
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 56
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par ska_root
    et pourquoi tu fais pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $query = "select count(*) from auth where
    name = '$name' and
    pass = password('$password')";
    :
    Je viens de le faire, et maintenant çà marche Nickel

    En fait j'apprends sur un livre qui s'appèle "Php&MySQL" publié chez Compuserve... Le code que je vous ai présenté est tiré du livre, mais régulièrement, je me rends compte que certains petits détails demandent à etre ajuster.... Ce problème de PASSWORD() me semble en etre la parfaite illustration
    Merci à tous entout cas, je peux continuer maintenant!

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 131
    Points : 82
    Points
    82
    Par défaut
    C'est résolu, mais puis-je continuer avec une question similaire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM Login WHERE (login= 'monlogin' AND password = PASSWORD ( 'test' ))
    je trouve mon code plutôt basique. Et si j'ai pris le mot de passe "test", c'est justement pour ne pas avoir de problème avec un mauvais recopiage de mot de passe.

    Evidemment ce login existe, mais il ne me trouve pas alors que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM Login WHERE (login= 'monlogin' )
    fonctionne et que je suis sure d'avoir utilisé la fonctione PASSWORD au moment de créer l'utilisateur (vérifié et revérifié).

    Edit : j'ai essayé pour tous les fonctions d'encryptage de MySQL par défaut. Aucune ne fonctionne. Et j'ai testé sous phpMyadmin.

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

Discussions similaires

  1. Problème de mot de passe : Connexion Access
    Par digital prophecy dans le forum Bases de données
    Réponses: 12
    Dernier message: 13/06/2012, 10h23
  2. Problème avec un REALM et un mot de passe crypté
    Par yodutouf dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 06/11/2007, 19h36
  3. Problème de mot de passe
    Par Jo14 dans le forum Access
    Réponses: 1
    Dernier message: 15/04/2006, 10h51
  4. [Stratégie] Connexion à MySQL avec mot de passe crypté
    Par Krishtov dans le forum Général Java
    Réponses: 5
    Dernier message: 08/03/2006, 17h27
  5. [Sécurité] mot de passe cryptée?
    Par kevinf dans le forum Langage
    Réponses: 8
    Dernier message: 01/11/2005, 14h02

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