Erreur : impossible d'envoyer l'en-tête. En-tête déjà envoyé

Fermé
tino_2065 Messages postés 24 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 4 mars 2022 - 27 nov. 2021 à 07:11
tino_2065 Messages postés 24 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 4 mars 2022 - 30 nov. 2021 à 20:05
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.

<!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:

2 réponses

jordane45 Messages postés 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 4 712
27 nov. 2021 à 08:43
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.
0
tino_2065 Messages postés 24 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 4 mars 2022
Modifié le 27 nov. 2021 à 09:17
J'ai déplacé mais toujours la même erreur.
<?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>
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525 > tino_2065 Messages postés 24 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 4 mars 2022
27 nov. 2021 à 10:23
Bonjour,

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
0
tino_2065 Messages postés 24 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 4 mars 2022 > Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022
27 nov. 2021 à 10:56
Toujours la même erreur
0
yg_be Messages postés 23364 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 décembre 2024 1 556 > tino_2065 Messages postés 24 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 4 mars 2022
27 nov. 2021 à 11:19
Le message d'erreur indique "ligne 19": vois-tu une instruction
header
à la ligne 19?

Pour tester, fais un code php avec uniquement ceci:
<?php
header('location:home.php');
?>
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525 > tino_2065 Messages postés 24 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 4 mars 2022
Modifié le 27 nov. 2021 à 11:22
Tu as bien vérifié qu'il n'y a pas de BOM utf8 ?
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
0
jordane45 Messages postés 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 4 712
Modifié le 28 nov. 2021 à 09:02
Alors..

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.

0
tino_2065 Messages postés 24 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 4 mars 2022
28 nov. 2021 à 07:21
Oui j'utilise notepad++ et l'encodage est en utf-8 sans BOM
0
tino_2065 Messages postés 24 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 4 mars 2022
28 nov. 2021 à 07:22
0
jordane45 Messages postés 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 4 712 > tino_2065 Messages postés 24 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 4 mars 2022
28 nov. 2021 à 07:41
Lignes 25 et 28 faut remplacer les deux points par dess points virgule..
0
tino_2065 Messages postés 24 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 4 mars 2022
28 nov. 2021 à 07:28
Ci-dessous mon fichier "config1" :

https://www.cjoint.com/c/KKCgAMkxwsK
0
tino_2065 Messages postés 24 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 4 mars 2022
30 nov. 2021 à 20:05
Merci frère
0