Menu

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

Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention - 15 mai 2017 à 19:44 - Dernière réponse : Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention
- 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";
 }
}
Afficher la suite 

35 réponses

Répondre au sujet
yg_be 5289 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 24 avril 2018 Dernière intervention - 15 mai 2017 à 20:05
0
Utile
bonsoir, peux-tu ajouter des commentaires pour indiquer à quel "if" correspond chaque "else", ou expliquer à quoi correspond ton erreur "2"?
Commenter la réponse de yg_be
Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention - 16 mai 2017 à 08:14
0
Utile
L'erreur correspond au if de la ligne 13 ci-dessus, l'erreur intérieur ce sont les lignes juste au dessus je pense.
Commenter la réponse de Amnexia
jordane45 20602 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention - 16 mai 2017 à 09:17
0
Utile
15
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 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention > jordane45 20602 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention - 16 mai 2017 à 10:39
J'ai tenter ça corrige moi si c'est faux
Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention > Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention - 16 mai 2017 à 10:52
comme je vient de voir c'est totalement faux x)
jordane45 20602 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention > Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 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
Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention > jordane45 20602 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention - 16 mai 2017 à 11:34
43493260 ça retourne bien mon code avec echo
Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention > Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 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']
Commenter la réponse de jordane45
Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention - Modifié par Amnexia le 16/05/2017 à 13:13
0
Utile
16
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 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention > jordane45 20602 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 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
Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention > Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 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.
Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention > Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention - 17 mai 2017 à 08:48
J'ai résolu le problème en enlevant les codes de la ligne 45 à 69.
Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention > Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 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
Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention > Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 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));
Commenter la réponse de Amnexia