Problème dans mon header
Fermé
janyduchemin
-
31 août 2021 à 22:25
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 - 8 sept. 2021 à 01:24
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 - 8 sept. 2021 à 01:24
A voir également:
- Problème dans mon header
- Cannot modify header information - headers already sent by ✓ - Forum PHP
- Bad pool header ✓ - Forum Windows 7
- Request header or cookie too large ✓ - Forum Réseaux sociaux
- Php header post ✓ - Forum PHP
- This report relates to a message you sent with the following header fields - Forum Réseaux sociaux
7 réponses
jordane45
Messages postés
38142
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 avril 2024
4 649
31 août 2021 à 22:36
31 août 2021 à 22:36
Bonjour
Et c'est quoi le message d'erreur (accessoirement ça pourrait nous servir....)
Et c'est quoi le message d'erreur (accessoirement ça pourrait nous servir....)
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
jordane45
Messages postés
38142
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 avril 2024
4 649
1 sept. 2021 à 07:48
1 sept. 2021 à 07:48
Je m'en doutais..
Tu affiches du contenu dans la page lignes 8, 10, 14 ... Avant ton instruction header ..et ça ce n'est pas autorisé...
Tu affiches du contenu dans la page lignes 8, 10, 14 ... Avant ton instruction header ..et ça ce n'est pas autorisé...
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!
jordane45
Messages postés
38142
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 avril 2024
4 649
1 sept. 2021 à 13:58
1 sept. 2021 à 13:58
Pour pouvoir voir les éventuelles erreurs, il faut désactiver les redirections (en les mettant en commentaire par exemple, le temps que tu finisses de corriger ton code)
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!
jordane45
Messages postés
38142
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 avril 2024
4 649
1 sept. 2021 à 17:12
1 sept. 2021 à 17:12
Si on parle de ce bout de code
Comment penses tu que ça fasse quoi que ce soit en bdd ... vu que tu n'exécutes pas la requête ?
if($datas == 1) { $sql = 'UPDATE recuperation SET code = ? WHERE email = ?'; $datas = array($recup_code,$recup_mail); } else {
Comment penses tu que ça fasse quoi que ce soit en bdd ... vu que tu n'exécutes pas la requête ?
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
jordane45
Messages postés
38142
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 avril 2024
4 649
2 sept. 2021 à 08:06
2 sept. 2021 à 08:06
Je ne te demande pas à quoi il sert... Je te dis qu'il manque des instructions php pour que ça marche...
janyduchemin
>
jordane45
Messages postés
38142
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 avril 2024
2 sept. 2021 à 22:45
2 sept. 2021 à 22:45
Bsr,
j'ai crée une class
public function updateUser($nom_prenom,$email){
$data = array(
'nom_prenom'=>$nom_prenom,
'email'=>$email,
);
}
vu que je travaille avec des classes mais ça ne change rien du coup je vois pas de qu'elle requête vous faites allusion.
j'ai crée une class
public function updateUser($nom_prenom,$email){
$data = array(
'nom_prenom'=>$nom_prenom,
'email'=>$email,
);
}
vu que je travaille avec des classes mais ça ne change rien du coup je vois pas de qu'elle requête vous faites allusion.
jordane45
Messages postés
38142
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 avril 2024
4 649
>
janyduchemin
2 sept. 2021 à 22:49
2 sept. 2021 à 22:49
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é
jordane45
Messages postés
38142
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 avril 2024
4 649
3 sept. 2021 à 06:46
3 sept. 2021 à 06:46
Ol ca me semble bon.
Et donc a quoi ressemble le code de ta page maintenant que tu utilises cette class ?
Et donc a quoi ressemble le code de ta page maintenant que tu utilises cette class ?
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..
jordane45
Messages postés
38142
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 avril 2024
4 649
8 sept. 2021 à 01:24
8 sept. 2021 à 01:24
Vois tu, dans les lignes de code que tu nous montres, l'instruction PDO qui permet d'exécuter la requête ???
(la réponse est non bien entendu... )
Tu en fais quoi de tes deux variables
$sql et $datas ??
(la réponse est non bien entendu... )
Tu en fais quoi de tes deux variables
$sql et $datas ??