Récupération du mot de passe
Résolu
Utilisateur anonyme
-
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"; } }
A voir également:
- Récupération du mot de passe
- Trousseau mot de passe iphone - Guide
- Mot de passe - Guide
- Mot de passe administrateur - Guide
- Mot de passe bios perdu - Guide
- Voir mot de passe wifi android - Guide
4 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonsoir, peux-tu ajouter des commentaires pour indiquer à quel "if" correspond chaque "else", ou expliquer à quoi correspond ton erreur "2"?
L'erreur correspond au if de la ligne 13 ci-dessus, l'erreur intérieur ce sont les lignes juste au dessus je pense.
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...
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"; } }
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
-> Tu ne mets qu'un seul "?" dans ta requête... mais tu envoies 3 variables dans les datas........
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........
ce qui veut dire que ta requête n'a retourné aucun résultat ....
Peux tu
1 - Faire un print du premier $data
nous dire ce que ça donne
2 - tester ta requête DIRECTEMENT dans ta BDD (via phpmyadmin par exemple)
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)
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) {
Je réitère ma question précédente : https://forums.commentcamarche.net/forum/affich-34595112-recuperation-du-mot-de-passe#6
*
*