Page 1 sur 1

Problème d'authentification php

Posté : 08 févr. 2015, 21:53
par LerikalBless
Bonjour, j'ai des petits code PHP qui me permet de me connecter avec un login et un mdp pour accéder a mon site mais le problème c'est que même si je rentre un bon ou mauvais mdp il me dit << mot de passe incorect >> Pouvez vous m'aidez s'il vous plaît ?. Je vous met en lien mon dossier contenant mes fichier php et ma base de donnée. J'ai besoin de votre aide svp merci beaucoup
https://www.dropbox.com/s/cv79441jkciu8 ... n.zip?dl=0

Re: Problème d'authentification php

Posté : 08 févr. 2015, 23:05
par @rthur
Bonjour LerikalBless,

Bienvenue sur PHPfrance !
Afin de pouvoir t'aider efficacement, il faut que tu mettes sur le forum les parties de codes potentiellement utiles pour t'aider.
Il est contreproductif de mettre un lien vers un zip qui contient l'intégralité d'un script (de TP de BTS SIO ;-) ) pour que les bonnes volontés l'installe sur leur machine et le debug à ta place.

D'un point de vue de la sécurité, il est dangereux pour ceux qui souhaiteraient t'aider de tester sur leur machine un script inconnu sans l'avoir relu intégralement car il pourrait contenir du code PHP malveillant.

Re: Problème d'authentification php

Posté : 09 févr. 2015, 14:23
par LerikalBless
------- Code pour se connecter ------------
$repInclude = 'include/';
  require($repInclude . "_init.inc.php");
  
  // est-on au 1er appel du programme ou non ?
  $etape=(count($_POST)!=0)?'validerConnexion' : 'demanderConnexion';
  
  if ($etape=='validerConnexion') { // un client demande à s'authentifier
      // acquisition des données envoyées, ici login et mot de passe
      $login = lireDonneePost("formLogin");
      $pwd = lireDonneePost("formPwd");   
      $lgUser = verifierInfosConnexion($idConnexion, $login, $pwd) ;
      // si l'id utilisateur a été trouvé, donc informations fournies sous forme de tableau
      if ( is_array($lgUser) ) { 
          affecterInfosConnecte($lgUser["num"], $lgUser["login"]);
      }
      else {
          ajouterErreur($tabErreurs, "Pseudo et/ou mot de passe incorrects");
      }
  }
  if ( $etape == "validerConnexion" && nbErreurs($tabErreurs) == 0 ) {
        header("Location:index.php");
  }
  require($repInclude . "_sommaire.inc.php");

Re: Problème d'authentification php

Posté : 09 févr. 2015, 14:25
par LerikalBless
function obtenirDetailVisiteur($idCnx, $unId) {
    $num = filtrerChainePourBD($unId);
    $requete = "select login, pwd, num from utilisateurs where num='" . $unId . "'";
    $idJeuRes = mysql_query($requete, $idCnx);  
    $ligne = false;     
    if ( $idJeuRes ) {
        $ligne = mysql_fetch_assoc($idJeuRes);
        mysql_free_result($idJeuRes);
    }
    return $ligne ;
}

function verifierInfosConnexion($idCnx, $unLogin, $unMdp) {
    $unLogin = filtrerChainePourBD($unLogin);
    $unMdp = filtrerChainePourBD($unMdp);
    // le mot de passe est crypté dans la base avec la fonction de hachage md5
    $req = "select login, pwd from utilisateurs where login='".$unLogin."' and pwd='" . $unMdp . "'";
    $idJeuRes = mysql_query($req, $idCnx) or
    die('Impossible de se connecter au serveur MySQL');
    $ligne = false;
    if ( $idJeuRes ) {
        $ligne = mysql_fetch_assoc($idJeuRes);
        mysql_free_result($idJeuRes);
    }
    return $ligne;
}

function affecterInfosConnecte($num, $login) {
    $_SESSION["idUser"] = $num;
    $_SESSION["loginUser"] = $login;
}

Re: Problème d'authentification php

Posté : 09 févr. 2015, 14:51
par tof73
// le mot de passe est crypté dans la base avec la fonction de hachage md5

comme il ne semble pas que tu haches le mot de passe rentré avant de la comparer à celui en bdd, cela ne fonctionne que si tu rentres le md5 du mot de passe dans le champ mot de passe et non le mot de passe.

Re: Problème d'authentification php

Posté : 09 févr. 2015, 16:21
par xTG
Question vocabulaire on ne parle pas de cryptage dans ce cas mais de hashage. :)

Le cryptage est réversible avec la clé, le hash ne l'est pas.
D'autant plus qu'un même hash peut être obtenu à partir de chaînes différentes (même si suivant l'algorithme utilisé la chance est plutôt faible).