Undefined index: recup_mail in....on line 101 & 158

Résolu/Fermé
JxSDev Messages postés 13 Date d'inscription lundi 25 avril 2016 Statut Membre Dernière intervention 10 mai 2016 - 5 mai 2016 à 17:05
Tomy2e Messages postés 816 Date d'inscription jeudi 21 février 2013 Statut Membre Dernière intervention 18 août 2016 - 5 mai 2016 à 21:16
Salut les gars
est ce que quelqu'un peux m'expliquer pourquoi cette erreur est apparue ? car , bizarre tout allait à merveille au début ><

voila le code :

<?php
require 'inc/bootstrap.php';
Session::getInstance();

$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/index.php">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="widget col-lg-12 col-md-12 col-sm-12 col-xs-12 col-sp-12" >

<div class="block products_block exclusive leomanagerwidgets" align="center">
<div class="form-group" align="center">
<h4>Récupération de mot de passe</h4>
<?php if(isset($_GET['section']) && $_GET['section'] == 'code') { ; ?>
Un code de vérification vous a été envoyé par mail: <?= $_SESSION['recup_mail'] ?>
<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']) && $_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" class="form-control"name="recup_mail"/><br/>
<input type="submit" value="Valider" name="recup_submit" class="btn btn-primary"/>
</form></div> </div></div>

<?php } ?>


<?php require 'inc/footer.php'; ?>



Que dois je faire pour régler ça ? Des conseils ? ^^
je vous remercie d'avance !

1 réponse

Tomy2e Messages postés 816 Date d'inscription jeudi 21 février 2013 Statut Membre Dernière intervention 18 août 2016 858
5 mai 2016 à 20:08
Bonjour, ça veut tout simplement dire que ta variable $_SESSION['recup_mail'] n'existe pas.
Est-ce qu'il y a un session_start(); dans ton require 'inc/bootstrap.php'; ?
La variable est-elle bien déclarée ? (sur une autre page par exemple)
0
Tomy2e Messages postés 816 Date d'inscription jeudi 21 février 2013 Statut Membre Dernière intervention 18 août 2016 858
5 mai 2016 à 20:20
En regardant un peu plus le code je vois que tu mélanges http://localhost/ et http://127.0.0.1/
Attention, il y a deux cookie différent pour ces deux adresses, si tu déclares une variable de session sur http://localhost/page1.php tu ne pourras pas l'afficher sur http://127.0.0.1/page2.php
Le problème vient peut-être de ça
0
JxSDev Messages postés 13 Date d'inscription lundi 25 avril 2016 Statut Membre Dernière intervention 10 mai 2016
5 mai 2016 à 20:48
tu sais ? t'es un hero , quelle idiote j'étais omg , c'etais a cause de 127.0.0.1 et localhost , je croyais que c'etait pareil ><
MERCI MERCI 1000 MERCI !!!
0
Tomy2e Messages postés 816 Date d'inscription jeudi 21 février 2013 Statut Membre Dernière intervention 18 août 2016 858
Modifié par Tomy2e le 5/05/2016 à 21:17
De rien ;)
J'ai déjà eu ce problème une fois aussi.
Si tu veux éviter ce genre de problème à l'avenir, mets des liens relatifs plutôt que des liens absolus
0