Bonjour à tous,
merci pour vos réponses j'ai en fait repérer l'erreur sur la variable, il fallait écrire $DB et non $Db ou $db.
Cependant je comprends pas très bien comprend instancie une nouvelle classe. Dans mon fichier Db.php
j'ai une class Db que j'utilise je pensais que celle-ci allait me servir pour tous les besoins.
je vous laisse ce code afain que vous jetiez un coup d'oeil
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 exec($sql , $data=array()){
try{
$req = $this->connexion->prepare($sql);
$req->execute($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 $DB->exec($sql , $data) ;
}
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'];
}
}
"
forgot.php "<?php require 'includes/includes.php';
if(!empty($_SESSION['user'])){
header('Location:profil.php');
}
?>
<?php
if(!empty($_POST))
{
$post = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
extract($post);
$errors = [];
if(empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)){
array_push($errors, 'Cette email est invalide.');
}
else{
$req = $DB->prepare('SELECT * FROM users WHERE email=:email');
$req->bindValue(':email', $email, PDO::PARAM_STR);
$req->execute();
if(!$req){
array_push($errors, 'Cet email ne correspond à aucun membre du site.');
}
else{
$user = $req->fetch();
}
if(empty($errors))
{
$token = uniqid();
$req = $DB->prepare('INSERT INTO password_resets (email, token, created_at) VALUES (:email, :token, NOW())');
$req->bindValue(':email', $email, PDO::PARAM_STR);
$req->bindValue(':token', $token, PDO::PARAM_STR);
$req->execute();
$link = 'Bonjour, veuillez cliquer sur <a href="https://membres.test/reset.php?token='.$token.'">ce lien</a> pour réinitialiser votre mote de passe.';
// Create the Transport
$transport = (new Swift_SmtpTransport('smtp.mailtrap.io', 465))
->setUsername('fae489573327ac')
->setPassword('eed3d4ab64b373')
;
// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);
// Create a message
$message = (new Swift_Message('Mot de passe oublié'))
->setFrom(['lcorrefabien@gmail.com' => 'John Doe'])
->setTo([$email => $user->name])
->addPart($link, 'text/html');
;
// Send the message
$result = $mailer->send($message);
if($result){
$success = 'Un email vous a été envoyé avec des instructions.';
unset($email);
}
}
}
}
?>
<?php
$titrepage="Mot de passe oublié || Ndameyong - L'Ecole des Langues Camerounaises" ;
require 'includes/header.php';
?>
<?php include('messages.php');?>
<form action="forgot.php" method="post">
<div class="form-group">
<label for="email">Email</label>
<input type="email" name="email" class="form-control" placeholder="Email" value="<?= $email ?? '';?>">
</div>
<button type="submit" class="btn btn-primary">Envoyer</button>
</form>
<br>
<p><a href="login.php">Je m'en souviens en fait.</a></p>
<?php require 'includes/footer2.php'; ?> "
Merci