Un souci avec mon code
Fermé
janyduchemin
Messages postés
36
Date d'inscription
mercredi 13 mars 2019
Statut
Membre
Dernière intervention
6 septembre 2023
-
22 oct. 2020 à 22:07
jordane45 Messages postés 38371 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 janvier 2025 - 24 oct. 2020 à 14:45
jordane45 Messages postés 38371 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 janvier 2025 - 24 oct. 2020 à 14:45
A voir également:
- Un souci avec mon code
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
3 réponses
jordane45
Messages postés
38371
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 janvier 2025
4 722
22 oct. 2020 à 22:33
22 oct. 2020 à 22:33
Bonjour,
Les trois messages sont liés...
Visiblement, tu n'as pas inclus le code de connexion à ta bdd....
Je t'invite à activer l'affichage des erreurs PHP ( et de suivre les conseils donnés ici : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code )
Et, au passage, d'appliquer également ce qui est marqué là :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Reviens nous voir avec ton code modifié si tes soucis persistent.
Les trois messages sont liés...
Visiblement, tu n'as pas inclus le code de connexion à ta bdd....
Je t'invite à activer l'affichage des erreurs PHP ( et de suivre les conseils donnés ici : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code )
Et, au passage, d'appliquer également ce qui est marqué là :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Reviens nous voir avec ton code modifié si tes soucis persistent.
Bonjour monsieur Jordan,
merci pour ce que vous faites pour les débutants que nous sommes
suite à votre apport d'hier j'ai résolu une partie de mon problème lié à la variable de attribué à la base de donné ($DB et non $BDD comme j'avais écris). le problème perdure au même niveau ligne 27 (recuperation.php) ma connection se trouve dans le fichier (include.php) qui contient les fichiers suuivants:
je vous envoi le code de la bdd (Db.php) et celui de (recuperation.php) entre temps je continu la lecture sur les cours que j'ai reçu hier de vous.
page Db.php
(recuperation.php)
je voudrai ajouter la section mot de passe oublié à mon site qui fonctionne très bien en local
merci encore
*
EDIT : Correction des balises de code
merci pour ce que vous faites pour les débutants que nous sommes
suite à votre apport d'hier j'ai résolu une partie de mon problème lié à la variable de attribué à la base de donné ($DB et non $BDD comme j'avais écris). le problème perdure au même niveau ligne 27 (recuperation.php) ma connection se trouve dans le fichier (include.php) qui contient les fichiers suuivants:
<?php require 'config.php'; require_once 'Classes/Db.php'; require_once 'Classes/auth.php'; $DB = new Db(); // cacher les erreurs pour la production ini_set('error_reporting',E_ALL); // afficher les érreurs lors du developpement //ini_set('error_reporting', E_ALL); ?>
je vous envoi le code de la bdd (Db.php) et celui de (recuperation.php) entre temps je continu la lecture sur les cours que j'ai reçu hier de vous.
page 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,array( 1002 =>'SET NAMES UTF8', PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING )); $this->connexion->exec('SET NAMES utf8'); //PDO::MYSQL_ATTR_INIT_COMMAND }catch (PDOException $e){ //echo 'Erreur : Impossible de se connecter à la BD !'; die(); echo $e->getMessage(); } } /* 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->connexion->prepare($sql); $req->execute($data); return $req->fetchAll(PDO::FETCH_ASSOC); } public function insert($sql , $data=array()){ $req = $this->connexion->prepare($sql); $nb=$req->execute($data); return $nb; } public function uniqueEmail($email){ $req = $this->connexion->prepare('SELECT count(*) as nbre from users WHERE email=:email limit 1'); $req->execute(array('email'=>$email)); $reponse = $req->fetchAll(PDO::FETCH_ASSOC); return $reponse[0]['nbre']; } }
(recuperation.php)
<?php require 'includes/includes.php' ?> <?php require 'includes/header2.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)) { $mailexist = $DB->prepare('SELECT id,nom FROM users WHERE email = ?'); $mailexist->execute(array($recup_mail)); $mailexist_count = $mailexist->rowCount(); if($mailexist_count == 1) { $nom = $mailexist->fetch(); $nom = $nom['nom']; $_SESSION['recup_mail'] = $recup_mail; $recup_code = ""; for($i=0; $i < 8; $i++) { $recup_code .= mt_rand(0,9); } $mail_recup_exist = $DB->prepare('SELECT id FROM recuperation WHERE email = ?'); $mail_recup_exist->execute(array($recup_mail)); $mail_recup_exist = $mail_recup_exist->rowCount(); if($mail_recup_exist == 1) { $recup_insert = $DB->prepare('UPDATE recuperation SET code = ? WHERE email = ?'); $recup_insert->execute(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 - Votresite</title> <meta charset="utf-8" /> </head> <body> <font color="#303030";> <div align="center"> <table width="600px"> <tr> <td> <div align="center">Bonjour <b>'.$nom.'</b>,</div> Voici votre code de récupération: <b>'.$recup_code.'</b> A bientôt sur <a href="http://www.ndameyong.com">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 - Votresite", $message, $header); header("Location:http://127.0.0.1/ndameyong/recuperation.php?section=code%26%2334%3B%29 } 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://127.0.0.1/ndameyong /recuperation.php?section=changemdp'); } 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://127.0.0.1/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"; } } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Mot de passe oublié</title> </head> <body> <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/> <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_passwordc"/><br/> <input type="submit" value="Valider" name="change_submit"/> </form> <?php } else { ?> <form method="post"> <input type="email" placeholder="Votre adresse mail" 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 ""; } ?> </body> </html>
je voudrai ajouter la section mot de passe oublié à mon site qui fonctionne très bien en local
merci encore
*
EDIT : Correction des balises de code
jordane45
Messages postés
38371
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 janvier 2025
4 722
23 oct. 2020 à 14:21
23 oct. 2020 à 14:21
$DB est une instance de ta class ..
elle ne contient pas de méthode prépare ou exec ...
Pour exécuter tes requêtes, tu dois utiliser les methodes de ta class db
par exemple, au lieu d'écrire
il faut écrire
Au passage, pour les fonctions de ta class db, je t'invite à regarder cet exemple.
Il gère les différents types de requêtes
https://github.com/jordane45/pdo-mysql
elle ne contient pas de méthode prépare ou exec ...
Pour exécuter tes requêtes, tu dois utiliser les methodes de ta class db
par exemple, au lieu d'écrire
$mailexist = $DB->prepare('SELECT id,nom FROM users WHERE email = ?'); $mailexist->execute(array($recup_mail)); $mailexist_count = $mailexist->rowCount();
il faut écrire
$sql = 'SELECT id,nom FROM users WHERE email = ?'; $datas = array($recup_mail); $mailexist = $DB->tquery($sql,$datas); $mailexist_count = count($mailexist);
Au passage, pour les fonctions de ta class db, je t'invite à regarder cet exemple.
Il gère les différents types de requêtes
https://github.com/jordane45/pdo-mysql
Janyduchemin
>
jordane45
Messages postés
38371
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 janvier 2025
Modifié le 23 oct. 2020 à 22:55
Modifié le 23 oct. 2020 à 22:55
Bsr monsieur jordan,
J'ai suivi vos instructions et ça marche mais je comprend pas pourquoi j'ai toujour un
Fatal error....Call to a member fonction fetch on array in c...recuperation.php line 32
Le corde source de (recuperation.php) reste le meme sí non j'ai fait les changements que vous avez apporté...
Recuperation.php (modifie)
J'ai suivi vos instructions et ça marche mais je comprend pas pourquoi j'ai toujour un
Fatal error....Call to a member fonction fetch on array in c...recuperation.php line 32
Le corde source de (recuperation.php) reste le meme sí non j'ai fait les changements que vous avez apporté...
Recuperation.php (modifie)
<?php require 'includes/includes.php' ?> <?php require 'includes/header2.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 FROM users WHERE email = ?'; $datas = array($recup_mail); $mailexist = $DB->tquery($sql,$datas); $mailexist_count = count($mailexist); if($mailexist_count == 1) { $nom = $mailexist->fetch(); $nom = $nom['nom']; $_SESSION['recup_mail'] = $recup_mail; $recup_code = ""; for($i=0; $i < 8; $i++) { $recup_code .= mt_rand(0,9); } $mail_recup_exist = $DB->prepare('SELECT id FROM recuperation WHERE email = ?'); $mail_recup_exist->execute(array($recup_mail)); $mail_recup_exist = $mail_recup_exist->rowCount(); if($mail_recup_exist == 1) { $recup_insert = $DB->prepare('UPDATE recuperation SET code = ? WHERE email = ?'); $recup_insert->execute(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 - Votresite</title> <meta charset="utf-8" /> </head> <body> <font color="#303030";> <div align="center"> <table width="600px"> <tr> <td> <div align="center">Bonjour <b>'.$nom.'</b>,</div> Voici votre code de récupération: <b>'.$recup_code.'</b> A bientôt sur <a href="http://www.ndameyong.com">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 - Votresite", $message, $header); header("Location:http://127.0.0.1/ndameyong/recuperation.php?section=code%26%2334%3B%29 } 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://127.0.0.1/ndameyong /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:http://127.0.0.1/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"; } } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Mot de passe oublié</title> </head> <body> <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/> <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_passwordc"/><br/> <input type="submit" value="Valider" name="change_submit"/> </form> <?php } else { ?> <form method="post"> <input type="email" placeholder="Votre adresse mail" 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 ""; } ?> </body> </html>
EDIT : Correction des balises de code ( ENCORE !!!! )
jordane45
Messages postés
38371
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 janvier 2025
4 722
>
Janyduchemin
23 oct. 2020 à 22:59
23 oct. 2020 à 22:59
Déjà, as tu remarqué que j'ai édité tes messages ? J'y ai corrigé les balises de code pour y spécifier le langage.....
Merci de lire ceci avant de poster tes prochains messages :
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite, si tu regardes ce que retourne la fonction tquery de ta class, tu verras qu'elle fais déjà un fetch (elle retourne donc un array )
Donc, dans la suite de ton code, tu ne dois pas refaire de fetch...
Il faut modifier ton code actuel
par
Merci de lire ceci avant de poster tes prochains messages :
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite, si tu regardes ce que retourne la fonction tquery de ta class, tu verras qu'elle fais déjà un fetch (elle retourne donc un array )
return $req->fetchAll(PDO::FETCH_ASSOC);
Donc, dans la suite de ton code, tu ne dois pas refaire de fetch...
Il faut modifier ton code actuel
7 $nom = $mailexist->fetch(); $nom = $nom['nom'];
par
$user = $mailexist[0]; $nom = $user['nom'];
Bonjour monsieur jordan,
Une fois de plus je reviens vers vous car après avoir rectifié le code de recuperation.php comme vous l'avez suggeré, le problems s'étend sur toutes les lignes où l'on devra se connecte dans la bdd pour des operations...j'avoue j'ai suivi une formation accelerée qui m'a permi de monter mon site...un ami m'a donc donner le code de recuperation.php afin d'ajouter la section mot de passe oublié dans mon site...du coup faire ce changement brusque d'écriture n'est pas mon fort je suis novice en PHP et jne Peux tout maitriser d'un seul coup....je demande une fois de plus votre aide (à partir de la ligne 35)
Le code de recuperation.php après votre dernière intervention
Une fois de plus je reviens vers vous car après avoir rectifié le code de recuperation.php comme vous l'avez suggeré, le problems s'étend sur toutes les lignes où l'on devra se connecte dans la bdd pour des operations...j'avoue j'ai suivi une formation accelerée qui m'a permi de monter mon site...un ami m'a donc donner le code de recuperation.php afin d'ajouter la section mot de passe oublié dans mon site...du coup faire ce changement brusque d'écriture n'est pas mon fort je suis novice en PHP et jne Peux tout maitriser d'un seul coup....je demande une fois de plus votre aide (à partir de la ligne 35)
Le code de recuperation.php après votre dernière intervention
<?php require 'includes/includes.php' ?> <?php require 'includes/header2.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 FROM users WHERE email = ?'; $datas = array($recup_mail); $mailexist = $DB->tquery($sql,$datas); $mailexist_count = count($mailexist); if($mailexist_count == 1) { $user = $mailexist->fetch[0]; $nom = $user['nom']; $_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 = ?'; $mail_recup_exist->execute(array($recup_mail)); $mail_recup_exist = $mail_recup_exist->rowCount(); if($mail_recup_exist == 1) { $recup_insert = $DB->prepare('UPDATE recuperation SET code = ? WHERE email = ?'); $recup_insert->execute(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 - Votresite</title> <meta charset="utf-8" /> </head> <body> <font color="#303030";> <div align="center"> <table width="600px"> <tr> <td> <div align="center">Bonjour <b>'.$nom.'</b>,</div> Voici votre code de récupération: <b>'.$recup_code.'</b> A bientôt sur <a href="http://www.ndameyong.com">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 - Votresite", $message, $header); header("Location:http://127.0.0.1/ndameyong/recuperation.php?section=code%26%2334%3B%29 } 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://127.0.0.1/ndameyong /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:http://127.0.0.1/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"; } } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Mot de passe oublié</title> </head> <body> <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/> <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_passwordc"/><br/> <input type="submit" value="Valider" name="change_submit"/> </form> <?php } else { ?> <form method="post"> <input type="email" placeholder="Votre adresse mail" 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 ""; } ?> </body> </html>
jordane45
Messages postés
38371
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 janvier 2025
4 722
24 oct. 2020 à 14:45
24 oct. 2020 à 14:45
ce changement brusque d'écriture n'est pas mon fort j
Il n'y a aucun changement de ma part .. je ne fais qu'utiliser le code que tu nous as fourni ...
pour ce qui est de la ligne 35 ... je t'ai déjà donné la réponse dans mon message précédent...
Pour tes lignes 44,45,46,47 .. il te suffit de faire la même chose que la correction que je t'ai donné pour tes lignes 29 à 32