Récupération du mot de passe

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Voila je met mon code ci-dessous pour essayé de trouver l'erreur ensemble, de mon coté je pense que ça coince au niveau de 9 à 14 j'ai encore du mal avec les requetes, j'ai l'erreur " 2 " qui apparaît quand j'écrit n'importe quoi dans mon formulaire.

session_start();

include('../php/config.php');

if(isset($_POST['verif_submit'],$_POST['verif_code']))
{
 if(!empty($_POST['verif_code']))
 {
     $verif_code = htmlspecialchars($_POST['verif_code']);
  $verif_req = $bdd->prepare('SELECT id FROM membres WHERE mail = ? AND code = ?');
  $verif_req->execute(array($_POST['mail_valid'],$verif_code));
  $verif_req = $verif_req->rowCount();
  if($verif_req == 1)
  {
   $sql = "SELECT * FROM membres WHERE mail = ?";
   $datas = array($mail_valid, $pass_valid, $pass2_valid);
   try{
    $prep= $bdd->prepare($sql);
    $prep->execute($datas);
    $a_result = $prep->fetchAll();
    $nbResult =  !empty($a_result) ? count($a_result) : 0;
   }catch(Exception $e){
    echo " Erreur : " . $e->getMessage();
   }
    $userexist = $nbResult;
   if($userexist == 1)
   {
    $userinfo = $a_result[0];
    $id = $userinfo['id'];
    $mail = $userinfo['mail'];
    $code = $userinfo['recup'];

    if($code == $_POST['verif_code'])
    {
     if($mail == 1)
     {
      $pass = hash("sha512",($_POST['pass']));
      $pass2 = hash("sha512",($_POST['pass2']));
      if($pass == $pass2)
      {
       $insert_db = $bdd->prepare("INSERT INTO membres(pass) VALUES(?)");
       $insert_db->execute(array($pass));
       $up_req = $bdd->prepare('UPDATE membres SET confirme = 1 WHERE mail = ?');
       $up_req->execute(array($mail));
      }
      else
      {
       $erreur = "Mots de passes incorrect ou non identique !";
      }
     }
     else
     {
      $erreur = "Email incorrect !";
     }
    }
    else
    {
     $erreur = "Code de vérification incorrect";
    }
   }
   else
   {
    $erreur = "1";
   }
  }
  else
  {
      $erreur = "2";
  }
 }
 else
 {
  $erreur = "Veuillez entrer votre code de confirmation";
 }
}

4 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonsoir, peux-tu ajouter des commentaires pour indiquer à quel "if" correspond chaque "else", ou expliquer à quoi correspond ton erreur "2"?
    0
  2. Utilisateur anonyme
     
    L'erreur correspond au if de la ligne 13 ci-dessus, l'erreur intérieur ce sont les lignes juste au dessus je pense.
    0
  3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Pourquoi ne pas avoir tenu compte de toutes mes remarques de ta question précédente ???

    Plusieurs choses ne vont pas dans ton code (encore...) :
    - il faut activer les erreurs php
    - Il faut mettre TOUTES tes requêtes dans des blocs try/catch
    - htmlspecialchars ne s'utilise que pour l'affichage ... pas pour la comparaison ou l'insertion en bdd
    - Il ne faut pas utiliser, pour une requete de type select, le RowCount
    - etc...

    <?php
    session_start();
    
    //activation de l'affichage des erreurs PHP
    error_reporting(E_ALL);
    ini_set('display-errors','on');
    
    include('../php/config.php');
    
    
    //------------------------------------------------------------//
    //récupération PROPRE des variables AVANT de les utiliser
    //------------------------------------------------------------//
    $verif_code = !empty($_POST['verif_code']) ? $_POST['verif_code']: NULL;
    $mail_valid = !empty($_POST['mail_valid']) ? $_POST['mail_valid']: NULL;
    
    
    if(isset($_POST['verif_submit'])){
       if($verif_code ) {
        
        $sql  = "SELECT id FROM membres WHERE mail = ? AND code = ?";
        $datas = array($mail_valid,$verif_code);
        try{
          $prep= $bdd->prepare($sql);
          $prep->execute($datas);
          $a_result_mail = $prep->fetchAll();
          $verif_req =  !empty($a_result_mail) ? count($a_result_mail) : 0;
         }catch(Exception $e){
           echo " Erreur : " . $e->getMessage();
         }
        
    
        if($verif_req == 1) {
           $sql = "SELECT * FROM membres WHERE mail = ?";
           $datas = array($mail_valid, $pass_valid, $pass2_valid);
           try{
            $prep= $bdd->prepare($sql);
            $prep->execute($datas);
            $a_result = $prep->fetchAll();
            $nbResult =  !empty($a_result) ? count($a_result) : 0;
           }catch(Exception $e){
            echo " Erreur : " . $e->getMessage();
           }
    
           if($nbResult == 1) {
             $userinfo = $a_result[0];
            $id = $userinfo['id'];
            $mail = $userinfo['mail'];
            $code = $userinfo['recup'];
    
            if($code == $verif_code) {
              if($mail == 1) {
                $pass = hash("sha512",($_POST['pass']));
                $pass2 = hash("sha512",($_POST['pass2']));
                if($pass == $pass2)  {
                
                $insert_db = $bdd->prepare("INSERT INTO membres(pass) VALUES(?)");
                 $insert_db->execute(array($pass));
                 $up_req = $bdd->prepare('UPDATE membres SET confirme = 1 WHERE mail = ?');
                 $up_req->execute(array($mail));
               
               } else {
                 $erreur = "Mots de passes incorrect ou non identique !";
               }
               
              } else {
                $erreur = "Email incorrect !";
              }
            } else  {
             $erreur = "Code de vérification incorrect";
            }
          } else {
            $erreur = "1";
          }
        } else {
            $erreur = "2";
            print_r($a_result_mail);
        }
      } else {
        $erreur = "Veuillez entrer votre code de confirmation";
      }
    }
    

    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Au passage ..... dans le code actuel ... les variables $mail_valid, $pass_valid, $pass2_valid .. ne sont pas définies ....
      et tu vas avoir un souci avec ces deux lignes
      $sql = "SELECT * FROM membres WHERE mail = ?";
      $datas = array($mail_valid, $pass_valid, $pass2_valid);
      

      -> Tu ne mets qu'un seul "?" dans ta requête... mais tu envoies 3 variables dans les datas........
      0
    2. Utilisateur anonyme > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Oui, désolé je vient de voir ça, par contre le : print_r($a_result_mail); ma retourné : Array ( ) et l'erreur 2 toujours
      0
    3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Utilisateur anonyme
       
      ce qui veut dire que ta requête n'a retourné aucun résultat ....
      Peux tu
      1 - Faire un print du premier $data
      if($verif_code ) {
          
          $sql  = "SELECT id FROM membres WHERE mail = ? AND code = ?";
          $datas = array($mail_valid,$verif_code);
          print_r($datas);
      

      nous dire ce que ça donne

      2 - tester ta requête DIRECTEMENT dans ta BDD (via phpmyadmin par exemple)
      0
    4. Utilisateur anonyme > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      J'ai trouver le bug c'était if($verif_code == 1) { il manquait le == 1 x)
      0
    5. Utilisateur anonyme > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Maintenant ça bug au niveau de l'erreur = "Veuillez entrer votre code de confirmation";
      print n'a rien retourné
      0
  4. Utilisateur anonyme
     
    J'ai fais comme ça je n'ai plus l'erreur au même endroit cette fois ci elle est revenu à " 2 " donc au niveau de la ligne : if($verif_req == 1)

    $verif_code = !empty($_POST['verif_code']) ? $_POST['verif_code']: NULL;
    $mail_valid = !empty($_POST['mail_valid']) ? $_POST['mail_valid']: NULL;
    
    if(isset($_POST['verif_submit']))
    {
    	$sql = "SELECT * FROM membres WHERE mail = ? AND recup = ?";
    	$datas = array($mail_valid,$verif_code);
    	try{
    	   $prep= $bdd->prepare($sql);
    	   $prep->execute($datas);
    	   $a_result = $prep->fetchAll();
    	   $nbResult =  !empty($a_result) ? count($a_result) : 0;
    	}catch(Exception $e){
    	  echo " Erreur : " . $e->getMessage();
    	}
    
    	$userexist = $nbResult;
    	if($userexist == 1)
    	{
    		$userinfo = $a_result[0];
    		$code = $userinfo['recup'];
    
    		if($verif_code == $code)
    		{
    			$sql  = "SELECT id FROM membres WHERE mail = ? AND code = ?";
    			$datas = array($mail_valid,$verif_code);
    			try{
    				$prep= $bdd->prepare($sql);
    				$prep->execute($datas);
    				$a_result_mail = $prep->fetchAll();
    				$verif_req =  !empty($a_result_mail) ? count($a_result_mail) : 0;
    			}catch(Exception $e)
    			{
    				echo " Erreur : " . $e->getMessage();
    			}
    
    			if($verif_req == 1)
    			{
    
    0
    1. Utilisateur anonyme > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Array ( [0] => mon_mail [1] => 43493260 )
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Utilisateur anonyme
       
      Et le ppint 2 ... la requête ???
      0
    3. Utilisateur anonyme > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Bon j'ai trouver ce problème la, je tenter de chercher sur ma db " code " alors que c'était recup
      0
    4. Utilisateur anonyme > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Maintenant j'avance petit à petit, je suis bloquer à l'erreur (1)
      0