Voilà comment tu as utilisé ton header():
header('Location:accueil.php');
Tu devrais l'utiliser comme ceci, afin d'éviter d'eventuelles erreurs :
header('Location: accueil.php');
exit();
La fonction exit(); empêche l’exécution du reste du script. Puisque tu rediriges l'utilisateur vers la page d'accueil, le reste du script ne t'intéresse forcément plus, c'est pourquoi il est important de marquer son arrêt! Tu dois donc logiquement définir tes sessions avant le exit, comme ceci :
else
{
session_start(); // Création de la session
$_SESSION['ID'] = $donnees['ID'];
$_SESSION['pseudo'] = $_POST['pseudo'];
header('Location: accueil.php'); // Redirection vers l'accueil
exit(); // Fin du script
}
Un include marcherait, mais ça ne serait pas propre !
Le fait est que tu crées le formulaire de connexion sur la page d'accueil, ce qui peut apparaître comme une difficulté supplémentaire.
Si tu souhaites faire ça de façon relativement propre, je te conseille de faire un include sur ton accueil, vers un fichier .php comprenant ton formulaire et le code qui va avec.
En gros sur ton accueil.php :
include('includes/widgets/login.php'); // Inclusion du fichier login.php
Personnellement je crée toujours un dossier includes/ pour les fichiers que j'ai à inclure
Et un dossier widgets/ comprenant les fichiers que j'ai à inclure sur toutes les pages (comme c'est souvent le cas pour les formulaires de connexion que l'on trouve en haut des sites, sur chaque page)
Et dans ton fichier includes/widgets/login.php, tu affiches ton formulaire tout comme tu le traites.
- Si le formulaire a été rempli :
- Si les infos rentrées sont correctes : Je crée la session et affiche le lien de déconnexion.
- Sinon : J'affiche le formulaire de connexion et l'erreur.
- Sinon :
- L'utilisateur n'a pas essayé de se connecter, je lui affiche donc le formulaire de connexion.
J'affiche le formulaire de connexion