Php/mysql

Résolu
Bonjour,
je veux vérifier le login et le mot de passe dans ma base
que j'ai créée sur mysql
voici le code que j'ai commencé

<?php

$bdd = "projet";
$host= "localhost";
$user= "root";
$pass= "";

if (mysql_connect($host,$user,$pass)){
echo'connection réussie.<br>';
}
else {
echo '"Impossible de se connecter à la base de données"'.mysql_error(); }
if(mysql_select_db('projet')){
echo' bd choisie';
}
else{
echo'"erreur"'.mysql_error();

}
$log=$_POST["login"];
$pass=$_POST["password"];

$requete= " SELECT login , password FROM user WHERE (login='$log' AND password='$pass' )";
$resultat=mysql_query($requete) or die ('erreur'.$requete.'' .mysql_error());

?>
Configuration: Windows XP
Firefox 2.0.0.16

2 réponses

  1. je te conseillerais plutot de faire comme ça :

    $log=$_POST["login"];
    $pass=$_POST["password"];
    
    $requete= " SELECT password FROM user WHERE login='$log'";
    $resultat=mysql_query($requete) or die ('erreur '.$requete.' '.mysql_error()); 
    $tabReponse= mysql_fetch_row($resultat);
    if ($tabReponse['password'] == $pass) echo 'le mot de passe est bon';
    else echo 'erreur, mauvais mot de passe';
    
    1. merci ça marche avec

      if ($tabReponse[0] == $pass) echo 'le mot de passe est bon';
      else echo 'erreur, mauvais mot de passe';

      mais comment vais-je crypter le mot de passe?
    2. @thomasonpour si tu le cryptes en MD5:
      if ($tabReponse[0] == md5($pass)) echo 'le mot de passe est bon';
      else echo 'erreur, mauvais mot de passe'; 


      edit : sachant que le $tabReponse[0] provient de la base de donnée et donc devra déjà etre crypté par md5
      tu aura donc un truc dans ce genre pour l'inscription
      $pass = md5($_POST[pass])
      mysql_query(insert $pass into etc ...)

      ps : bravo pour avoir corrigé mon erreur ^^
      habituelement j'utilisais mysql_fetch_array donc ça aurait été ['password'] mais la j'ai mis fetch row donc ça doit etre [0] comme tu as trouvé

      ps2 :
      bien sur il faut aussi garder comme l'as dit je sais plus qui juste en dessous
      $log = mysql_real_escape_string(htmlspecialchars($_POST['login']));­
      au lieu de
      $log = $_POST['login'];­
      pour le pass c'est bon puisqu'il sera crypté
    3. @thomasonEt ne pas oublier de le crypter dans la base de donnée lord de l'insertion aussi !
  2. Et ne pas oublier pour éviter les injections sql/xss :
    $log = mysql_real_escape_string(htmlspecialchars($_POST['login']));
    $pass = mysql_real_escape_string(htmlspecialchars($_POST['password']));
    


    Je te conseille aussi de crypter tes mots de passe lors de l'insertion dans ta BDD par exemple avec md5() puis tu compares le hachage md5 avec celui de ta BDD.
    Seul problème avec ce système, c'est que t'es obligé de regénérer un mot de passe si un utilisateur l'a perdu.
    1. comment faire cà?
      as-tu un code source disponible?
      ça m'intéresse!!!!!