Récupération du mot de passe

Résolu/Fermé
Utilisateur anonyme - Modifié le 15 mai 2017 à 19:45
 Utilisateur anonyme - 17 mai 2017 à 09:14
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

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
15 mai 2017 à 20:05
bonsoir, peux-tu ajouter des commentaires pour indiquer à quel "if" correspond chaque "else", ou expliquer à quoi correspond ton erreur "2"?
0
Utilisateur anonyme
16 mai 2017 à 08:14
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
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
16 mai 2017 à 09:17
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
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
16 mai 2017 à 09:20
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
Utilisateur anonyme > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
16 mai 2017 à 09:41
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
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > Utilisateur anonyme
16 mai 2017 à 09:45
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
Utilisateur anonyme > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
16 mai 2017 à 09:50
J'ai trouver le bug c'était if($verif_code == 1) { il manquait le == 1 x)
0
Utilisateur anonyme > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
16 mai 2017 à 09:53
Maintenant ça bug au niveau de l'erreur = "Veuillez entrer votre code de confirmation";
print n'a rien retourné
0
Utilisateur anonyme
Modifié le 16 mai 2017 à 13:13
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
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
16 mai 2017 à 13:59
0
Utilisateur anonyme > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
16 mai 2017 à 14:08
Array ( [0] => mon_mail [1] => 43493260 )
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > Utilisateur anonyme
16 mai 2017 à 14:11
Et le ppint 2 ... la requête ???
0
Utilisateur anonyme > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
16 mai 2017 à 14:13
Bon j'ai trouver ce problème la, je tenter de chercher sur ma db " code " alors que c'était recup
0
Utilisateur anonyme > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
16 mai 2017 à 14:13
Maintenant j'avance petit à petit, je suis bloquer à l'erreur (1)
0