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 :

[SQL] Comparaison de mots de passe


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 31
    Points : 27
    Points
    27
    Par défaut [SQL] Comparaison de mots de passe
    Bonjour à tous.

    Pour la création d'un site, j'ai une base de donnée mysql dans laquelle des utilisateurs s'inscrivent en choisissant un mot de passe.
    Celui-ci est stocké après l'avoir codé par la fonction password.

    Quand mon utilisateur revient sur le site, je voudrais qu'il puisse se connecter. Je teste donc l'égalité entre le password qu'il rentre, une fois encodé, et le password encodé contenu dans la base. Mais ça ne marche pas....

    Quand je fais mes tests :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(PASSWORD($password)=password){
    echo "1";
    } else{
    echo "2";
    }
    (où $password est la valeur rentrée dans le formulaire, et password est obtenu depuis la table),
    j'obtiens toujours la valeur 1.

    Alors que si je fais un code similaire avec le nom d'utilisateur, j'obtiens bien 1 si le nom est dans la base et 2 sinon...

    Merci de me venir en aide, je tourne en rond !!

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur Informatique
    Inscrit en
    Décembre 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur Informatique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 146
    Points : 158
    Points
    158
    Par défaut
    heu je dis peut-être des bétieses mais tu n'es pas censé comparé deux variables ?

    et avoir quelque chose de ce type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PASSWORD($password_saisie)==$password_table
    De plus un seul = dans un if c'est une affectation. Il faut == pour faire une comparaison en php.
    Mon blog est sur https://arphonis.fr et bientôt d'autres fonctionnalités seront disponible dessus.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 31
    Points : 27
    Points
    27
    Par défaut
    En fait le password sans $ c'est le nom de mon champ dans ma base sql. D'où l'abscence de $ !

    Ensuite j'ai voulu faire un pseudo-code pour expliquer mon problème... et j'ai mis un = là où il fallait un ==.

    Pour être précis sur mon problème, ma page contient un formulaire, qui exécute la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function formFunction( $nom, $prenom, $password ){
     
    $dq = mysql_connect('monhote', 'user', 'password');
    mysql_select_db('nomdelabase',$db);
     
    $sql = "SELECT * from nomTable WHERE prenom=$prenom AND nom=$nom";
    $req = mysql_query( $sql ) or die([...]);
     
    // traitement des données avec une boucle while et un mysql_fetch_assoc($req)
     
    mysql_close($db);
    }
    Ca ça tourne. Seulement si je demande à ma ligne sql la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "SELECT * from nomTable WHERE prenom=$prenom AND nom=$nom AND PASSWORD($password)=password";
    dans ce cas la variable data ne contient plus rien...

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut une version simpa
    voila se que j'utilise et je n'est pas de problèmes mais j'utilise SHA1 pour crypter le mot de pass

    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
     
    <?PHP
    function displayLogin() {
    header("WWW-Authenticate: Basic realm=\"My Website\"");
    header("HTTP/1.0 401 Unauthorized");
    echo "<h2>Authentication Failure</h2>";
    echo "The username and password provided did not work. Please reload this page and try again.";
    exit;
    }
     
    include("../_connect.php");
     
    if (!isset($PHP_AUTH_USER) || !isset($PHP_AUTH_PW)) {
    displayLogin();
    } else {
    $PHP_AUTH_USER = addslashes($PHP_AUTH_USER);
    $PHP_AUTH_PW = sha1($PHP_AUTH_PW);
     
    $result = mysql_query("SELECT count(userID) FROM users WHERE upass='$PHP_AUTH_PW' AND uname='$PHP_AUTH_USER'") or die("Couldn't query the user-database.");
    	$num = mysql_result($result, 0);
     
    	if (!$num) {
    		displayLogin();
    	}
    }
     
    if ($_REQUEST['logout'] == true) {
    displayLogin();
    } 
    ?>

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 31
    Points : 27
    Points
    27
    Par défaut
    C'est là où je suis malin : je viens de me rendre compte du problème alors que j'ai déjà des utilisateurs qui se sont inscrits sur ma base

    Donc si je change la fonction de codage du password, ils n'auront plus accès à la base de données...

    Oui je sais, je cumule...

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 302
    Points : 141
    Points
    141
    Par défaut
    Tiens si cela peut t'aider j'utilise ceci pour me connecter :
    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
    $pseudo="'".mysql_escape_string($_REQUEST['pseudo'])."'"; 
    $mdp=mysql_escape_string($_REQUEST['mdp']); 
     
    $resultat=mysql_query("SELECT * FROM formulaire WHERE login=$pseudo",$connexion); 
    echo mysql_error();
    if (empty($pseudo) || empty($mdp)){
      header('Location: authentification.html');
    }
    else{
    if ($resultat) {
      $users=mysql_fetch_array($resultat);
      if ($users["pwd"] == $mdp)
        {
        $_SESSION["valid_user"]=1;
        header('Location: index1.php');
        }
      else {
      header('Location: authentification.html');
      }
    }
    else {
      header('Location: authentification.html');
    }
    }
    Kévin

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 302
    Points : 141
    Points
    141
    Par défaut
    Alors est-ce que cela vous a servi?
    Kévin

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 31
    Points : 27
    Points
    27
    Par défaut
    Je suis en train de me rendre compte que je suis un des plus gros boulets de ma génération...
    Je stocke mon password sur 15 caractères dans ma base. Or la fonction password($pwd) sql retourne un mot de passe stocké sur... 16 !!!!

    Donc je vais aller me flageller et demander aux personnes de ma base de se réinscrire !

    Merci quand même de m'avoir répondu aussi rapidement.

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

Discussions similaires

  1. [SQL] Récuperer le mot de passe d'un utilisateur
    Par sliderman dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/11/2007, 16h41
  2. [MySQL] Comparaison de mots de passe PHP-MySQL
    Par jaymzwise dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 30/07/2007, 14h31
  3. table liée sql server et mot de passe
    Par samuelsiffert dans le forum VBA Access
    Réponses: 2
    Dernier message: 06/06/2007, 21h46
  4. [Delphi] Lecture et comparaison de mots de passe
    Par Jayceblaster dans le forum Langage
    Réponses: 6
    Dernier message: 22/04/2006, 12h21
  5. Encodage et comparaison de mot de passe
    Par SuperCed dans le forum Sécurité
    Réponses: 4
    Dernier message: 27/05/2005, 12h01

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