Hey lors de mon développement j'ai eu un problème avec le header location, si je le met il me retourne ceci
<?php
$PAGE_NAME = "Réinitialiser mon mot de passe";
require 'inc/constants.php';
require 'inc/database.php';
require 'inc/functions.php';
require 'templates/template.header.php';
require 'templates/template.navbar.php';
if(isset($_GET['id']) && isset($_GET['token'])){
require 'inc/db.php';
require 'inc/functions.php';
$req = $pdo->prepare('SELECT * FROM users WHERE id = ? AND reset_token IS NOT NULL AND reset_token = ? AND reset_at > DATE_SUB(NOW(), INTERVAL 30 MINUTE)');
$req->execute([$_GET['id'], $_GET['token']]);
$user = $req->fetch();
if($user){
if(!empty($_POST)){
if(!empty($_POST['password']) && $_POST['password'] == $_POST['password_confirm']){
$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
$pdo->prepare('UPDATE users SET password = ?, reset_at = NULL, reset_token = NULL')->execute([$password]);
session_start();
$_SESSION['flash']['success'] = 'Votre mot de passe a bien été modifié';
$_SESSION['auth'] = $user;
header('Location: account.php');
exit();
}
}
}else{
session_start();
$_SESSION['flash']['error'] = "Ce token n'est pas valide";
header('Location: login.php');
exit();
}
}else{
header('Location: login.php');
exit();
}
require 'templates/template.reset.php';
require 'templates/template.footer.php';
Merci
« N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP. »
source
« Règle importante : l'appel de cette fonction doit se faire avant tout envoi au navigateur (instruction echo, print, espace blanc, balise html...) sous peine de générer une erreur de type Headers already sent by.... Cette erreur signifie que la page a déjà été envoyée au navigateur avant de vouloir envoyer des entêtes HTTP. La logique de développement demande le contraire ! »
source
Au début de ton code, tu fais des require d'élément php.
Par conséquent, ton header(location:) ne peux pas fonctionner.