Warning: Cannot modify header information - headers already sent in C:\xampp\htd

Résolu
Bonjour, aidez moi

<?php
ob_start();
session_start();
require_once('connexion.php');
error_reporting(E_ALL | E_WARNING | E_NOTICE);
ini_set('display_errors', TRUE);
if(isset($_POST['login'])){
$username=$_POST['username'];
$motpasse=$_POST['motpasse'];
if($username&&$motpasse){
$query="SELECT*from user where username='$username' AND motpasse='$motpasse'";
$query_run=mysqli_query($conn,$query);
$rep = mysqli_fetch_assoc($query_run);
if($rep!=''){
$_SESSION['id_user'] = $rep['id_user'];}
$row=mysqli_num_rows($query_run);
if($row==1){
flush();
header('Location: index(1).php');
exit();

//echo"<script type='text/javascript'>location.href='index(1).php';</script>";

//die('should have redirected by now');
}else{
echo "username ou password incorrect";
}
}else{
echo "veuillez saisir tous les champs";
}
}
?>

Configuration: Windows / Chrome 89.0.4389.82

4 réponses

  1. Modérateur
    Bonjour,

    Pour commencer, lorsque tu postes du code sur le forum tu dois utiliser les BALISES DE CODE.
    Explications (à lire entièrement !! ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

    Ensuite, merci d'appliquer les r conseils donnés ici : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

    Enfin, l'extension mysql_* est obsolète...
    Désormais tu dois passer à PDO ( ma préférence... ) ou mysqli https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top

    1. On peut utiliser le pdo et procedural dans même projet ?
    2. J'ai travaillé avec pdo toujours reste le même promblème
    3. Modérateur
      @btissam1998Bah, il faudrait nous montrer ton code en PDO...
  2. j'ai trouvé le problème dans securityuser.php lorsque je l'enlève le header fonctionne mais j'ai besoin de la securité

    <?php
    session_start();
    require_once('connexion.php');
    if (!$_SESSION['username']) {

    header('Location: login(1).php');
    }
    ?>
    1. Contributeur
      peux-tu partager le message d'erreur complet?
    2. Modérateur
      Je t'ai expliqué que tu devais utiliser les balises de code pour poster ton code sur le forum....

      Concernant ton souci, toutes les instructions PHP header. Doivent se situer avant tout affichage HTML ou écho de PHP .....

      quoi qu'il en soit, comme tu ne nous montre pas ton code complet, il nous est impossible de t'en dire davantage.


  3. <?php
    ob_start();
    session_start();
    require_once('connexion.php');
    error_reporting(E_ALL | E_WARNING | E_NOTICE);
    ini_set('display_errors', TRUE);
    if (!$_SESSION['username']) {
    flush();
    header('Location:login(1).php');
    exit();
    //echo'<script >document.location.replace("login(1).php");</script>';
    }

    1. Notice: Undefined index: username in C:\xampp\htdocs\gauto-preview\gauto-preview\securityuser.php on line 7

      Warning: Cannot modify header information - headers already sent in C:\xampp\htdocs\gauto-preview\gauto-preview\securityuser.php on line 9
      1. Contributeur
        as-tu essayé en supprimant la ligne avec flush()?
      2. Modérateur
        l'ob_start et le flush n'ont aucune utilité dans ton code... retire les.

        Ensuite... tu as des erreurs car ta variable de session n'existe pas.

        Pour éviter cela.. il faut récupérer PROPREMENT les variables AVANT de les utiliser :
        Par exemple
        <?php
        session_start();
        
        error_reporting(E_ALL | E_WARNING | E_NOTICE);
        ini_set('display_errors', TRUE);
        
        require_once('connexion.php');
        
        
        $username = !empty($_SESSION['username']) ? $_SESSION['username'] : NULL;
        
        if (!$username) {
          header('Location:login(1).php');
          exit();
          //echo'<script >document.location.replace("login(1).php");</script>';
        }
        
        


        PS: Merci de relire le lien concernant l'utilisation des balises de code que etu n'as pas du lire entièrement !!
        Il faut, DANS les balises .. indiquer le LANGAGE . ça permet d'avoir la coloration syntaxique ainsi que la numérotation des lignes... (comme dans le code que je t'ai donné )