Problème dans mon header
janyduchemin
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bsr la communauté,
j'ai un fichier pour où l'on insert son e-mail pour recuperer son mot de passe. Cependant, j'ai une erreur qui s'affiche dans mon header, je ne sais pas si c'est dû au fait d'être en local ou alors c'est autre chose. Je vous laisse le code du fichier concerné
password_reset.php
Merci!
j'ai un fichier pour où l'on insert son e-mail pour recuperer son mot de passe. Cependant, j'ai une erreur qui s'affiche dans mon header, je ne sais pas si c'est dû au fait d'être en local ou alors c'est autre chose. Je vous laisse le code du fichier concerné
password_reset.php
<?php require 'includes/includes.php' ?> <?php $titrepage="Mot de passe oublié || Ndameyong - L'Ecole des Langues Camerounaises" ; require 'includes/header.php'; ?> <!-- message de session --> <?php if (isset($_SESSION['message'])): ?> <div class="message"> <?php echo $_SESSION['message']; ?></div> <?php unset($_SESSION['message']) ?> <?php endif ?> <?php if (isset($_SESSION['erreur'])): ?> <div class="errorMessage"> <?php echo $_SESSION['erreur']; ?></div> <?php unset($_SESSION['erreur']) ?> <?php endif ?> <?php if(isset($Get['section'])){ $section = htmlspecialchars($Get['section']); }else{ $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)) { $sql = 'SELECT id,nom_prenom FROM users WHERE email = ?'; $datas = array($recup_mail); $mailexist = $DB->tquery($sql,$datas); $mailexist_count = count($mailexist); if($mailexist_count == 1) { $user = $mailexist[0]; $nom_prenom = $user['nom_prenom']; $_SESSION['recup_mail'] = $recup_mail; $recup_code = ""; for($i=0; $i < 8; $i++) { $recup_code .= mt_rand(0,9); } $sql = 'SELECT id FROM recuperation WHERE email = ?'; $datas = array($recup_mail); $datas = count($mailexist); if($datas == 1) { $sql = 'UPDATE recuperation SET code = ? WHERE email = ?'; $datas = array($recup_code,$recup_mail); } else { $recup_insert = $DB->prepare('INSERT INTO recuperation(email,code) VALUES (?, ?)'); $recup_insert->execute(array($recup_mail,$recup_code)); } $header="MIME-Version: 1.0\r\n"; $header.='From:"[VOUS]"<***@***>'."\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 - www.ndameyong.com</title> <meta charset="utf-8" /> </head> <body> <font color="#303030";> <div align="center"> <table width="600px"> <tr> <td> <div align="center">Bonjour <b>'.$nom_prenom.'</b>,</div> Voici votre code de récupération: <b>'.$recup_code.'</b> A bientôt sur <a href="#">www.ndameyong.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 - https://www.ndameyong.com", $message, $header); header("Location:https://www.ndameyong.com/recuperation.php?section=code"); } else { $error = "Cette adresse mail n'est pas enregistrée"; } } else { $error = "Adresse mail invalide"; } } else { $error = "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 = $DB->prepare('SELECT id FROM recuperation WHERE email = ? AND code = ?'); $verif_req->execute(array($_SESSION['recup_mail'],$verif_code)); $verif_req = $verif_req->rowCount(); if($verif_req == 1) { $up_req = $DB->prepare('UPDATE recuperation SET confirme = 1 WHERE email = ?'); $up_req->execute(array($_SESSION['recup_mail'])); header('Location:https://www.ndameyong.com/recuperation.php?section=changepassword'); } else { $error = "Code invalide"; } } else { $error = "Veuillez entrer votre code de confirmation"; } }if(isset($_POST['change_submit'])) { if(isset($_POST['change_password'],$_POST['change_passwordc'])) { $verif_confirme = $DB->prepare('SELECT confirme FROM recuperation WHERE email = ?'); $verif_confirme->execute(array($_SESSION['recup_mail'])); $verif_confirme = $verif_confirme->fetch(); $verif_confirme = $verif_confirme['confirme']; if($verif_confirme == 1) { $password = htmlspecialchars($_POST['change_password']); $passwordc = htmlspecialchars($_POST['change_passwordc']); if(!empty($password) AND !empty($passwordc)) { if($password == $passwordc) { $password = sha1($password); $ins_password = $DB->prepare('UPDATE users SET password = ? WHERE email = ?'); $ins_password->execute(array($password,$_SESSION['recup_mail'])); $del_req = $DB->prepare('DELETE FROM recuperation WHERE email = ?'); $del_req->execute(array($_SESSION['recup_mail'])); header('Location:https://www.ndameyong.com/login/'); } else { $error = "Vos mots de passes ne correspondent pas"; } } else { $error = "Veuillez remplir tous les champs"; } } else { $error = "Veuillez valider votre mail grâce au code de vérification qui vous a été envoyé par mail"; } } else { $error = "Veuillez remplir tous les champs"; } } ?> <div id="main"> <h4 class="title-element">Récupération de mot de passe</h4> <?php if($section == 'code') { ?> Un code de vérification vous a été envoyé par mail: <?= $_SESSION['recup_mail'] ?> <br/> <div id="moi"> <form method="post"> <input type="text" placeholder="Code de vérification" name="verif_code"/><br/> <input type="submit" value="Valider" name="verif_submit"/> </form> <?php } elseif($section == "changepassword") { ?> Nouveau mot de passe pour <?= $_SESSION['recup_mail'] ?> <form method="post"> <input type="password" placeholder="Nouveau mot de passe" name="change_password"/><br/> <input type="password" placeholder="Confirmation du mot de passe" name="change_password"/><br/> <input type="submit" value="Valider" name="change_submit"/> </form> <?php } else { ?> <form method="post"> <input type="email" placeholder="Votre adresse mail" class="input-text" name="recup_mail"/><br/> <input type="submit" value="Valider" name="recup_submit"/> </form> <?php } ?> <?php if(isset($error)) { echo '<span style="color:red">'.$error.'</span>'; } else { echo ""; } ?> </div> </div> <?php require 'includes/footer2.php'; ?>
Merci!
A voir également:
- Problème dans mon header
- Your browser sent a request that this server could not understand. size of a request header field exceeds server limit. ✓ - Forum Bureautique
- Bad pool header ✓ - Forum Windows
- Bad request ... - Forum Réseaux sociaux
- Rgb header c'est quoi - Forum Carte-mère/mémoire
- 400 bad request request header or cookie too large ✓ - Forum Google Chrome
7 réponses
Bsr,
voilà le message: Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\ndameyong\includes\header.php:9) in C:\wamp\www\ndameyong\password_reset.php on line 88
voilà le message: Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\ndameyong\includes\header.php:9) in C:\wamp\www\ndameyong\password_reset.php on line 88
Bjr,
l'erreur a disparu mais étant en local j'espérais voir un code s’insérer dans ma bdd mais rien ne se passe.
voilà mon code
password_reset.php
Merci!
l'erreur a disparu mais étant en local j'espérais voir un code s’insérer dans ma bdd mais rien ne se passe.
voilà mon code
password_reset.php
<?php require 'includes/includes.php' ?> <!-- message de session --> <?php if (isset($_SESSION['message'])): ?> <div class="message"> <?php echo $_SESSION['message']; ?></div> <?php unset($_SESSION['message']) ?> <?php endif ?> <?php if (isset($_SESSION['erreur'])): ?> <div class="errorMessage"> <?php echo $_SESSION['erreur']; ?></div> <?php unset($_SESSION['erreur']) ?> <?php endif ?> <?php if(isset($Get['section'])){ $section = htmlspecialchars($Get['section']); }else{ $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)) { $sql = 'SELECT id,nom_prenom FROM users WHERE email = ?'; $datas = array($recup_mail); $mailexist = $DB->tquery($sql,$datas); $mailexist_count = count($mailexist); if($mailexist_count == 1) { $user = $mailexist[0]; $nom_prenom = $user['nom_prenom']; $_SESSION['recup_mail'] = $recup_mail; $recup_code = ""; for($i=0; $i < 8; $i++) { $recup_code .= mt_rand(0,9); } $sql = 'SELECT id FROM recuperation WHERE email = ?'; $datas = array($recup_mail); $datas = count($mailexist); if($datas == 1) { $sql = 'UPDATE recuperation SET code = ? WHERE email = ?'; $datas = array($recup_code,$recup_mail); } else { $recup_insert = $DB->prepare('INSERT INTO recuperation(email,code) VALUES (?, ?)'); $recup_insert->execute(array($recup_mail,$recup_code)); } $header="MIME-Version: 1.0\r\n"; $header.='From:"[VOUS]"<***@***>'."\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 - Ndameyong.com</title> <meta charset="utf-8" /> </head> <body> <font color="#303030";> <div align="center"> <table width="600px"> <tr> <td> <div align="center">Bonjour <b>'.$nom_prenom.'</b>,</div> Voici votre code de récupération: <b>'.$recup_code.'</b> A bientôt sur <a href="#">www.ndameyong.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 - https://www.ndameyong.com", $message, $header); header("Location:http://localhost/ndameyong/password_reset.php?section=code"); } else { $error = "Cette adresse mail n'est pas enregistrée"; } } else { $error = "Adresse mail invalide"; } } else { $error = "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 = $DB->prepare('SELECT id FROM recuperation WHERE email = ? AND code = ?'); $verif_req->execute(array($_SESSION['recup_mail'],$verif_code)); $verif_req = $verif_req->rowCount(); if($verif_req == 1) { $up_req = $DB->prepare('UPDATE recuperation SET confirme = 1 WHERE email = ?'); $up_req->execute(array($_SESSION['recup_mail'])); header('Location:http://localhost/ndameyong/password_reset.php?section=changepassword'); } else { $error = "Code invalide"; } } else { $error = "Veuillez entrer votre code de confirmation"; } }if(isset($_POST['change_submit'])) { if(isset($_POST['change_password'],$_POST['change_passwordc'])) { $verif_confirme = $DB->prepare('SELECT confirme FROM recuperation WHERE email = ?'); $verif_confirme->execute(array($_SESSION['recup_mail'])); $verif_confirme = $verif_confirme->fetch(); $verif_confirme = $verif_confirme['confirme']; if($verif_confirme == 1) { $password = htmlspecialchars($_POST['change_password']); $passwordc = htmlspecialchars($_POST['change_passwordc']); if(!empty($password) AND !empty($passwordc)) { if($password == $passwordc) { $password = sha1($password); $ins_password = $DB->prepare('UPDATE users SET password = ? WHERE email = ?'); $ins_password->execute(array($password,$_SESSION['recup_mail'])); $del_req = $DB->prepare('DELETE FROM recuperation WHERE email = ?'); $del_req->execute(array($_SESSION['recup_mail'])); header('Location:http://localhost/ndameyong/login/'); } else { $error = "Vos mots de passes ne correspondent pas"; } } else { $error = "Veuillez remplir tous les champs"; } } else { $error = "Veuillez valider votre mail grâce au code de vérification qui vous a été envoyé par mail"; } } else { $error = "Veuillez remplir tous les champs"; } } ?> <?php $titrepage="Mot de passe oublié || Ndameyong - L'Ecole des Langues Camerounaises" ; require 'includes/header.php'; ?> <div id="main"> <h4 class="title-element">Récupération de mot de passe</h4> <?php if($section == 'code') { ?> Un code de vérification vous a été envoyé par mail: <?= $_SESSION['recup_mail'] ?> <br/> <div id="moi"> <form method="post"> <input type="text" placeholder="Code de vérification" name="verif_code"/><br/> <input type="submit" value="Valider" name="verif_submit"/> </form> <?php } elseif($section == "changepassword") { ?> Nouveau mot de passe pour <?= $_SESSION['recup_mail'] ?> <form method="post"> <input type="password" placeholder="Nouveau mot de passe" name="change_password"/><br/> <input type="password" placeholder="Confirmation du mot de passe" name="change_password"/><br/> <input type="submit" value="Valider" name="change_submit"/> </form> <?php } else { ?> <form method="post"> <input type="email" placeholder="Votre adresse mail" class="input-text" name="recup_mail"/><br/> <input type="submit" value="Valider" name="recup_submit"/> </form> <?php } ?> <?php if(isset($error)) { echo '<span style="color:red">'.$error.'</span>'; } else { echo ""; } ?> </div> </div> <?php require 'includes/footer.php'; ?>
Merci!
Salut,
je viens de les désactiver les redirections, rien ne passe je passe que c'est parce que je suis en local, aucune erreur ne s'affiche, et quand j'insère une fausse adresse e-mail, je reçois une une alert donc je pense que ça devrait fonctionner en mettant le site en ligne.
Merci!
je viens de les désactiver les redirections, rien ne passe je passe que c'est parce que je suis en local, aucune erreur ne s'affiche, et quand j'insère une fausse adresse e-mail, je reçois une une alert donc je pense que ça devrait fonctionner en mettant le site en ligne.
Merci!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bsr,
le code est conçu tel qu 'un utilisateur reçoive d'abord un code (des chiffres) qu'il va insérer dans un formulaire. si l'utilisateur rafraichit le lien qu'il recevra le code devra changer dans la bdd, voilç pourquoi il update. Après avoir insérer ce code dans un formulaire, il recevra un nouveau où il lui sera demander de changer son mot de passe
le code est conçu tel qu 'un utilisateur reçoive d'abord un code (des chiffres) qu'il va insérer dans un formulaire. si l'utilisateur rafraichit le lien qu'il recevra le code devra changer dans la bdd, voilç pourquoi il update. Après avoir insérer ce code dans un formulaire, il recevra un nouveau où il lui sera demander de changer son mot de passe
Pour executer une requête. en pdo ... tu sais.. les deux lignes ... prepare et execute...
Pour rappel :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Pour rappel :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Salut,
le code de ma bdd (Db.php)
Je pense avoir activé les messages d'erreurs sauf si je me suis trompé
le code de ma bdd (Db.php)
<?php /** * Gestion de la base de données */ class Db { private $host = HOST; private $name = DBNAME; private $user = USER; private $pass = PWD; private $connexion; function __construct($host = null, $name = null, $user = null, $pass = null) { if ($host != null) { $this->host = $host; $this->name = $name; $this->user = $user; $this->pass = $pass; } try { $this->connexion = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->name, $this->user, $this->pass); // Activation des erreurs PDO $this->connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $this->connexion->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch (PDOException $e) { die('Erreur : ' . $e->getMessage()); } } private function dbQuery($sql,$data=NULL){ try { $prep = $this->connexion->prepare($sql); $prep->execute($data); return $prep; } catch (Exception $e) { echo 'Erreur : ' . $e->getMessage(); echo '<br> Dans la requête :' . $sql; echo '<br> Avec les DATAS :'; var_dump($data); exit; } } /* requete */ public function query($sql, $data = array()) { $req = $this->connexion->prepare($sql); $req->execute($data); return $req->fetchAll(PDO::FETCH_OBJ); } public function tquery($sql, $data = array()) { $req = $this->dbQuery($sql,$data); return $req->fetchAll(PDO::FETCH_ASSOC); } public function insert($sql, $data = array()) { return $this->dbQuery($sql,$data); } public function exec($sql, $data = array()) { try { $req = $this->dbQuery($sql,$data); return $req->rowCount(); // Retourne le nombre de lignes impactées par la reuqête } catch (Exception $e) { echo 'Erreur : ' . $e->getMessage(); // en cas d'erreur dans la requête ! } } public function deleteuser($id) { $sql = 'DELETE FROM users WHERE id=:id'; $data = [':id' => $id]; return $this->exec($sql, $data); } public function uniqueEmail($email) { $sql = 'SELECT count(*) as nbre from users WHERE email=:email limit 1'; $data = array(':email' => $email); $req = $this->dbQuery($sql,$data); $reponse = $req->fetch(PDO::FETCH_ASSOC); return !empty($reponse['nbre']) ? $reponse['nbre'] : 0; } public function updateUser($nom_prenom,$email){ $data = array( 'nom_prenom'=>$nom_prenom, 'email'=>$email, ); $sql ='UPDATE recuperation SET confirme = 1 WHERE email = ?'; return $this->dbQuery($sql,$data); } }
Je pense avoir activé les messages d'erreurs sauf si je me suis trompé
Bsr,
Me revoilà après quelques jours de maladie...
Je beau regarder mais je comprends pas pourquoi je tourne en rond sur ce bout de code {
j'ai essaye une J'ai même essayer une autre qui m'envoyait des erreurs..
Me revoilà après quelques jours de maladie...
Je beau regarder mais je comprends pas pourquoi je tourne en rond sur ce bout de code {
if($datas == 1) { $sql = 'UPDATE recuperation SET code = ? WHERE email = ?'; $datas = array($recup_code,$recup_mail); } else {)
j'ai essaye une J'ai même essayer une autre qui m'envoyait des erreurs..