Erreur : impossible d'envoyer l'en-tête. En-tête déjà envoyé
tino_2065
Messages postés
38
Statut
Membre
-
tino_2065 Messages postés 38 Statut Membre -
tino_2065 Messages postés 38 Statut Membre -
Bonjour, les ainés j'ai un souci au niveau de ma page de connexion.
En effet, lorsque l'utilisateur de mon site essaie de se connecter,ça ne passe pas et voici le message d'erreur : impossible d'envoyer l'en-tête. En-tête déjà envoyé.
Ci-dessous mon code veuillez bien vouloir l'analyses et me dire où se trouve l'erreur.
En effet, lorsque l'utilisateur de mon site essaie de se connecter,ça ne passe pas et voici le message d'erreur : impossible d'envoyer l'en-tête. En-tête déjà envoyé.
Ci-dessous mon code veuillez bien vouloir l'analyses et me dire où se trouve l'erreur.
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<?php
require('config1.php');
if (isset($_POST['username'])){
$username = stripslashes($_REQUEST['username']);
$username = mysqli_real_escape_string($conn, $username);
$_SESSION['username'] = $username;
$password = stripslashes($_REQUEST['password']);
$password = mysqli_real_escape_string($conn, $password);
$query = "SELECT * FROM `users` WHERE username='$username'
and password='".hash('sha256', $password)."'";
$result = mysqli_query($conn,$query) or die(mysql_error());
if (mysqli_num_rows($result) == 1) {
$user = mysqli_fetch_assoc($result);
// vérifier si l'utilisateur est un administrateur ou un utilisateur
if ($user['type'] == 'admin') {
header('location:home.php');
}else{
header('location: index.php');
}
}else{
$message = "Le nom d'utilisateur ou le mot de passe est incorrect.";
}
}
?>
<form class="box" action="" method="post" name="login">
<h1 class="box-logo box-title">
<a href="https://waytolearnx.com/">WayToLearnX.com</a>
</h1>
<h1 class="box-title">Connexion</h1>
<input type="text" class="box-input" name="username" placeholder="Nom d'utilisateur">
<input type="password" class="box-input" name="password" placeholder="Mot de passe">
<input type="submit" value="Connexion " name="submit" class="box-button">
<p class="box-register">Vous êtes nouveau ici?
<a href="register.php">S'inscrire</a>
</p>
<?php if (! empty($message)) { ?>
<p class="errorMessage"><?php echo $message; ?></p>
<?php } ?>
</form>
</body>
</html>
Configuration: Android / Chrome 80.0.3987.132
A voir également:
- Dans la messagerie ci-dessous, envoyez un nouveau message à manon (manon@pixmail.org) en mettant en copie nina (nina@pixmail.org) :
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur upes 1025 - Forum Téléviseurs
- Instagram connexion impossible erreur inattendue ✓ - Forum Instagram
2 réponses
Bonjour
Les instructions "header(...". doivent être placées avant tout affichage et/ou tout code html..
Il faut donc déplacer ton code php au dessus de ton code html.
Les instructions "header(...". doivent être placées avant tout affichage et/ou tout code html..
Il faut donc déplacer ton code php au dessus de ton code html.
Alors..
Déjà, voici quelques petites corrections/améliorations de ton code
Ensuite... on ne sait rien de ton fichier config1.php .. j'espère qu'il contient bien un session_start() (sinon faudra penser à le mettre si tu veux pouvoir utiliser la variable $_SESSION)
Et puis, il ne doit pas contenir de code html, de echo ou de print ou de var_dump ... sinon ça empèche les instructions header de fonctionner.
Et enfin, encore une fois ... VERIFIE L'ENCODAGE DE TES FICHIERS ...
Notepad n'est pas le plus adapté à la programmation...
utilise notepad++ ou un ide plus évolué ( visual studio code, netbeans php, php storm ... )
Et pour rappel... pour vérifier l'encodage, voir chapitre 1 de ce lien :
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
Edit: correction des lignes 25 et 28.
Déjà, voici quelques petites corrections/améliorations de ton code
<?php
//Affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
require_once 'config1.php';
//traitement du formulaire
if (isset($_POST['username'])){
$username = stripslashes(trim($_POST['username']));
$password = stripslashes(trim($_POST['password']));
$password = mysqli_real_escape_string($conn, $password);
$username = mysqli_real_escape_string($conn, $username);
$query = "SELECT * FROM `users` WHERE username='$username' and password='".hash('sha256', $password)."'";
$result = mysqli_query($conn,$query) or die(mysql_error());
if (mysqli_num_rows($result) == 1) {
$_SESSION['username'] = $username;
$user = mysqli_fetch_assoc($result);
// vérifier si l'utilisateur est un administrateur ou un utilisateur
if ($user['type'] == 'admin') {
header('location:home.php');
exit;//toujours mettre un exit après une redirection
}else{
header('location: index.php');
exit; //toujours mettre un exit après une redirection
}
}else{
$message = "Le nom d'utilisateur ou le mot de passe est incorrect.";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css" />
<meta charset="utf8">
</head>
<body>
<form class="box" action="" method="post" name="login">
<h1 class="box-logo box-title">
<a href="https://waytolearnx.com/">WayToLearnX.com</a>
</h1>
<h1 class="box-title">Connexion</h1>
<input type="text" class="box-input" name="username" placeholder="Nom d'utilisateur">
<input type="password" class="box-input" name="password" placeholder="Mot de passe">
<input type="submit" value="Connexion " name="submit" class="box-button">
<p class="box-register">Vous êtes nouveau ici?
<a href="register.php">S'inscrire</a>
</p>
<?php if (! empty($message)) { ?>
<p class="errorMessage"><?php echo $message; ?></p>
<?php } ?>
</form>
</body>
</html>
Ensuite... on ne sait rien de ton fichier config1.php .. j'espère qu'il contient bien un session_start() (sinon faudra penser à le mettre si tu veux pouvoir utiliser la variable $_SESSION)
Et puis, il ne doit pas contenir de code html, de echo ou de print ou de var_dump ... sinon ça empèche les instructions header de fonctionner.
Et enfin, encore une fois ... VERIFIE L'ENCODAGE DE TES FICHIERS ...
Notepad n'est pas le plus adapté à la programmation...
utilise notepad++ ou un ide plus évolué ( visual studio code, netbeans php, php storm ... )
Et pour rappel... pour vérifier l'encodage, voir chapitre 1 de ce lien :
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
Edit: correction des lignes 25 et 28.

<?php require('config1.php'); if (isset($_POST['username'])){ $username = stripslashes($_REQUEST['username']); $username = mysqli_real_escape_string($conn, $username); $_SESSION['username'] = $username; $password = stripslashes($_REQUEST['password']); $password = mysqli_real_escape_string($conn, $password); $query = "SELECT * FROM `users` WHERE username='$username' and password='".hash('sha256', $password)."'"; $result = mysqli_query($conn,$query) or die(mysql_error()); if (mysqli_num_rows($result) == 1) { $user = mysqli_fetch_assoc($result); // vérifier si l'utilisateur est un administrateur ou un utilisateur if ($user['type'] == 'admin') { header('location:home.php'); }else{ header('location: index.php'); } }else{ $message = "Le nom d'utilisateur ou le mot de passe est incorrect."; } } ?> <!DOCTYPE html> <html> <head><body> <link rel="stylesheet" href="style.css" /> </head> <form class="box" action="" method="post" name="login"> <h1 class="box-logo box-title"> <a href="https://waytolearnx.com/">WayToLearnX.com</a> </h1> <h1 class="box-title">Connexion</h1> <input type="text" class="box-input" name="username" placeholder="Nom d'utilisateur"> <input type="password" class="box-input" name="password" placeholder="Mot de passe"> <input type="submit" value="Connexion " name="submit" class="box-button"> <p class="box-register">Vous êtes nouveau ici? <a href="register.php">S'inscrire</a> </p> <?php if (! empty($message)) { ?> <p class="errorMessage"><?php echo $message; ?></p> <?php } ?> </form> </body> </html>A priori le problème vient de la première ligne du fichier login.php ("sortie démarrée à .../login.php:1").
Assure toi de ne pas avoir d'espace ou de ligne vide avant l'ouverture de la balise php "<?php" qui doit être au tout début de ton fichier login.php
Si le problème persiste, comme indiqué par jordane45 sur ta précédente question, vérifie que tes fichiers .php sont bien encodé en UTF8 sans BOM.
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
Pour tester, fais un code php avec uniquement ceci:
<?php header('location:home.php'); ?>Quel éditeur de texte tu utilises pour éditer les fichiers .php ?
Tu peux éventuellement partager ton fichier sur le forum avec cjoint pour que nous vérifions si celui-ci est bien encodé :
https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers