Notice: Undefined index: recup_mail in..

Par Jaina jaina, il y a 10 ans


Bonjour,

Ce que j'ai

Le but de ce code : permettre aux users de reinitialiser leurs mot de passe en cas d'oubli.

Au début, tout marchait bien , j'ai même tout tester plusieurs fois et c'était réussi.

Le lendemain quand j'ai voulu vérifier pour une nouvelle fois le bon fonctionnement de cette derniere j'ai rencontré cette erreur:

( ! ) Notice: Undefined index: recup_mail in C:\wamp\www\TOUPACKGROUP\forget.php on line 153

le code :

<?php require 'inc/bootstrap.php'; $bdd = new PDO('mysql:dbname=toupackgbd;host=localhost', 'root', ''); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); if(isset($_GET['section'])) { $section = $_GET['section']; } if(isset($_POST['recup_submit'], $_POST['recup_mail'])) { if(!empty($_POST['recup_mail'])) { $recup_mail = htmlspecialchars($_POST['recup_mail']); if(filter_var($recup_mail,FILTER_VALIDATE_EMAIL)) { $mailexist = $bdd->prepare('SELECT id_customer,company_name FROM customer WHERE email = ?'); $mailexist->execute(array($recup_mail)); $mailexist_count = $mailexist->rowCount(); if($mailexist_count == 1) { $pseudo = $mailexist->fetch(); $pseudo = $pseudo->company_name; $_SESSION['recup_mail'] = $recup_mail; $recup_code = ""; for($i=0; $i < 8; $i++) { $recup_code .= mt_rand(0,9); } $mail_recup_exist = $bdd->prepare('SELECT id FROM reset WHERE mail = ?'); $mail_recup_exist->execute(array($recup_mail)); $mail_recup_exist = $mail_recup_exist->rowCount(); if($mail_recup_exist == 1) { $recup_insert = $bdd->prepare('UPDATE reset SET code = ? WHERE mail = ?'); $recup_insert->execute(array($recup_code,$recup_mail)); } else { $recup_insert = $bdd->prepare('INSERT INTO reset (mail,code) VALUES (?, ?)'); $recup_insert->execute(array($recup_mail,$recup_code)); } $header="MIME-Version: 1.0\r\n"; $header.='From:"Toupackgroup.com"<support@Toupackgroup.com>'."\n"; $header.='Content-Type:text/html; charset="utf-8"'."\n"; $header.='Content-Transfer-Encoding: 8bit'; $message = ' <html> <head> <title>Récupération de mot de passe - Toupackgroup.com</title> <meta charset="utf-8" /> </head> <body> <font color="#303030";> <div align="center"> <table width="600px"> <tr> <td> <div align="center">Bonjour <b>'.$pseudo.'</b>,</div> Voici votre code de récupération: <b>'.$recup_code.'</b> A bientôt sur <a href="http://Toupackgroup.com/">Toupackgroup.com</a> ! </td> </tr> <tr> <td align="center"> <font size="2"> Ceci est un email automatique, merci de ne pas y répondre </font> </td> </tr> </table> </div> </font> </body> </html> '; mail($recup_mail, "Récupération de mot de passe - Toupackgroup.com", $message, $header); header("Location:http://127.0.0.1/TOUPACKGROUP/forget.php?section=code"); } else { Session::getInstance()->setFlash('danger',"Cette adresse mail n'est pas enregistrée"); } } else { Session::getInstance()->setFlash('danger',"Adresse mail invalide"); } } else { Session::getInstance()->setFlash('danger',"Veuillez entrer votre adresse mail"); } } 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 reset WHERE mail = ? AND code = ?'); $verif_req->execute(array($_SESSION['recup_mail'],$verif_code)); $verif_req = $verif_req->rowCount(); if($verif_req == 1) { $up_req = $bdd->prepare('UPDATE reset SET confirme = 1 WHERE mail = ?'); $up_req->execute(array($_SESSION['recup_mail'])); header('Location:http://localhost/TOUPACKGROUP/forget.php?section=changemdp'); }else{ Session::getInstance()->setFlash('danger',"Code invalide"); } } else { Session::getInstance()->setFlash('danger',"Veuillez entrer votre code de confirmation"); } } if(isset($_POST['change_submit'])) { if(isset($_POST['change_mdp'],$_POST['change_mdpc'])) { $verif_confirme = $bdd->prepare('SELECT confirme FROM reset WHERE mail = ?'); $verif_confirme->execute(array($_SESSION['recup_mail'])); $verif_confirme = $verif_confirme->fetch(); $verif_confirme = $verif_confirme->confirme; if($verif_confirme == 1) { $mdp = htmlspecialchars($_POST['change_mdp']); $mdpc = htmlspecialchars($_POST['change_mdpc']); if(!empty($mdp) AND !empty($mdpc)) { if($mdp == $mdpc){ $mdp = password_hash($mdp, PASSWORD_BCRYPT); $ins_mdp = $bdd->prepare('UPDATE customer SET passwd = ?, reset_at = NOW() WHERE email = ?'); $ins_mdp->execute(array($mdp, $_SESSION['recup_mail'])); $del_req = $bdd->prepare('DELETE FROM reset WHERE mail = ?'); $del_req->execute(array($_SESSION['recup_mail'])); header('Location:http://localhost/TOUPACKGROUP/login.php'); } else { Session::getInstance()->setFlash('danger',"Vos mots de passes ne correspondent pas"); } } else { Session::getInstance()->setFlash('danger',"Veuillez remplir tous les champs"); } } else { Session::getInstance()->setFlash('danger',"Veuillez valider votre mail grâce au code de vérification qui vous a été envoyé par mail"); } } else { Session::getInstance()->setFlash('danger',"Veuillez remplir tous les champs"); } } ?> <?php require 'inc/header2.php'; ?> <div class="form-group" align="center"> <h4 class="title-element">Récupération de mot de passe</h4> <?php if(isset($_GET['section']) == 'code') { ; ?> Un code de vérification vous a été envoyé par mail: <?= $_SESSION['recup_mail'] ?> <br/> <form method="post"> <input type="text" placeholder="Code de vérification" name="verif_code"/><br/> <input type="submit" value="Valider" name="verif_submit" class="btn btn-primary"/> </form> </div> <?php } elseif(isset($_GET['section']) == "changemdp") { ?> <div class="form-group" align="center"> Nouveau mot de passe pour <?= $_SESSION['recup_mail'] ?> <form method="post"> <input type="password" placeholder="Nouveau mot de passe" name="change_mdp"/><br/> <input type="password" placeholder="Confirmation du mot de passe" name="change_mdpc"/><br/> <input type="submit" value="Valider" name="change_submit" class="btn btn-primary"/> </form> </div> <?php } else { ?> <div class="form-group" align="center"> <form method="post"> <input type="email" placeholder="Votre adresse mail" id="recup_mail" name="recup_mail"/><br/> <input type="submit" value="Valider" name="recup_submit" class="btn btn-primary"/> </form></div> <?php } ?> <?php require 'inc/footer.php'; ?>

Ce que je veux

je ne sais pas ce qui s'est passé mais a variable recup_mail n'est plus prise en compte et quand je fais entrer le code de vérification une autre erreur s'affiche avec : Notice: Undefined variable: _SESSION in C:\wamp\www\TOUPACKGROUP\forget.php on line 99
Que quelqu'un m'explique ce qui se passe s'il vous plait Confus le jour J approche et je stresse énormément T_T

JE VOUS REMERCIE D AVANCE POUR VOTRE AIDE LES SUPERS-HEROS

2 réponses

Carouge10, il y a 10 ans

Bonjour,
Le session_start() est fait où ?

Jaina jaina, il y a 10 ans

elle est faite dans ma classe Session !

<?php /* Created by PhpStorm. User: Gee Date: 22/03/2016 Time: 21:04 */ class Session{ static $instance; static function getInstance(){ if(!self::$instance){ self::$instance = new Session(); } return self::$instance; } public function __construct() { session_start(); } public function setFlash($key, $Msg){ $_SESSION['flash'][$key] = $Msg; } public function hasFlashes(){ return isset($_SESSION['flash']); } public function getFlashes(){ $flash = $_SESSION['flash']; unset($_SESSION['flash']); return $flash; } public function write($key, $value){ $_SESSION[$key] = $value; } public function read($key){ return isset($_SESSION[$key]) ? $_SESSION[$key] : null; } public function delete($key){ unset($_SESSION[$key]); } }