Signaler

Récupération du mot de passe [Résolu]

Posez votre question Amnexia 56Messages postés samedi 19 novembre 2016Date d'inscription 24 août 2017 Dernière intervention - Dernière réponse le 17 mai 2017 à 09:14 par Amnexia
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";
 }
}
Utile
+0
plus moins
bonsoir, peux-tu ajouter des commentaires pour indiquer à quel "if" correspond chaque "else", ou expliquer à quoi correspond ton erreur "2"?
Donnez votre avis
Utile
+0
plus moins
L'erreur correspond au if de la ligne 13 ci-dessus, l'erreur intérieur ce sont les lignes juste au dessus je pense.
Donnez votre avis
Utile
+0
plus moins
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";
  }
}

Amnexia 56Messages postés samedi 19 novembre 2016Date d'inscription 24 août 2017 Dernière intervention jordane45 - 16 mai 2017 à 10:39
J'ai tenter ça corrige moi si c'est faux
Répondre
Amnexia 56Messages postés samedi 19 novembre 2016Date d'inscription 24 août 2017 Dernière intervention - 16 mai 2017 à 10:52
comme je vient de voir c'est totalement faux x)
Répondre
jordane45 18312Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 22 septembre 2017 Dernière intervention - 16 mai 2017 à 11:25
Peux tu me rappeller ce que contient la variable $a_result ?
(fais en un print_r )
et fais également un echo de ta variable $verif_code
Répondre
Amnexia 56Messages postés samedi 19 novembre 2016Date d'inscription 24 août 2017 Dernière intervention - 16 mai 2017 à 11:34
43493260 ça retourne bien mon code avec echo
Répondre
Amnexia 56Messages postés samedi 19 novembre 2016Date d'inscription 24 août 2017 Dernière intervention - 16 mai 2017 à 11:36
la il suffit juste que je compare mon code dans la db et le code $_POST['verif_code']
Répondre
Donnez votre avis
Utile
+0
plus moins
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)
			{
Amnexia 56Messages postés samedi 19 novembre 2016Date d'inscription 24 août 2017 Dernière intervention - 17 mai 2017 à 08:22
$sql = "SELECT * FROM membres WHERE mail = (?, ?, ?)";
J'ai remis comme ça du coup, mais j'ai toujours une erreur ( erreur 1 ) à ce niveau :

$userexist = $nbResult;
 if($userexist == 1)
 {


ça rentre pas dans cette vérification donc le problème est juste au dessus
Répondre
Amnexia 56Messages postés samedi 19 novembre 2016Date d'inscription 24 août 2017 Dernière intervention - 17 mai 2017 à 08:29
En faisant print_r($nbResult); ça me renvoi 0, c'est à cause de ça que $userexist != 1
Donc il y a un problème dans la requete $sql à ce qu'on m'avait dit.
Répondre
Amnexia 56Messages postés samedi 19 novembre 2016Date d'inscription 24 août 2017 Dernière intervention - 17 mai 2017 à 08:48
J'ai résolu le problème en enlevant les codes de la ligne 45 à 69.
Répondre
Amnexia 56Messages postés samedi 19 novembre 2016Date d'inscription 24 août 2017 Dernière intervention - 17 mai 2017 à 08:49
Tout fonctionne bien sauf l'incrustation dans la db ça me créé un nouvel utilisateur au lieu d’insérer dans celui actuel
Répondre
Amnexia 56Messages postés samedi 19 novembre 2016Date d'inscription 24 août 2017 Dernière intervention - 17 mai 2017 à 09:14
Trouvé aussi :

$insert_db = $bdd->prepare("UPDATE membres SET pass = ? WHERE mail = ?");
$insert_db->execute(array($pass,$mail));
$up_req = $bdd->prepare("UPDATE membres SET confirme = 1 WHERE mail = ?");
$up_req->execute(array($mail));
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !