IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[PHP-JS] headers already sent


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 14
    Points : 6
    Points
    6
    Par défaut [PHP-JS] headers already sent
    php / MySQL

    Dans une de mes page j'ai créé un formulaire tout fonctionne normalement.
    sauf ke apres l"envoiil ne fai pa de rediretion et affiche ce text

    Warning: Cannot modify header information - headers already sent in c:\program files\easyphp1-8\www\v0.1\inscription.php on line 50


    g verifié le code et apparament cette est erreur et frequente car lorske g fai des recherche google je n'est eu ke de page avec cette erreur dessus.
    il fau savoire k'il reste sur la page du formulaire apres le post et affiche le warning en haut ds le fichier inscription.php a la ligne 50 il ya :

    header(sprintf("Location: %s", $insertGoTo));
    avec insertGoTo est une variable qui contien le lien de la page de redirection.
    tel k'il est il y a ajout de donnée ds la bes mé po de redirection et un mesg d'erreur en prime.
    si je supprime cette ligne y a plu de mesg d'erreur mé po de redirection non plu.
    Merci pour votre aide.
    s'il vou plai ne donnez po seulement le mode d'emploi mé je ve comprendre pourquoi.

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377

  3. #3
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    En bref ...

    Si tue veux utiliser la fonction Header il faut qu'aucune sortie n'aie été effectuée sur la sortie standard ... Aucun echo / print ou autre balise html ...

    Il faut rester coté serveur ...

  4. #4
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    C'est pas une question de rester coté serveur... avec php tu reste toujours coté serveur... c'est que les en têtes http doivent être envoyés avant tout contenu d'affichage c'est comme ça que fonctionne le protocole http... je rajouterais qu'il est inutile d'utiliser sprintf dans ce genre de situation... .. .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header('Location: '.$insertGoTo);
    @ tchaOo°

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    ca marche toujour pas...

  6. #6
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    Bonjour,

    Donne plus de code si tu veux qu'on t'aide ...

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <?php
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
    $editFormAction = $_SERVER['PHP_SELF'];
    if (isset($_SERVER['QUERY_STRING'])) {
      $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
    }
    if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
      $insertSQL = sprintf("INSERT INTO user (PSEUDO_USER, PASS_USER, NOM_USER, PRENOM_USER, ADRESSE_USER, EMAIL_USER) VALUES (%s, %s, %s, %s, %s, %s)",
                           GetSQLValueString($_POST['Pseudo_use'], "text"),
                           GetSQLValueString($_POST['pass_user'], "text"),
                           GetSQLValueString($_POST['nom_user'], "text"),
                           GetSQLValueString($_POST['Prenom_user'], "text"),
                           GetSQLValueString($_POST['adresse_user'], "text"),
                           GetSQLValueString($_POST['Email_user'], "text"));
      mysql_select_db($database_connect, $connect);
      $Result1 = mysql_query($insertSQL, $connect) or die(mysql_error());
      $insertGoTo = "../bdfl/Login.php";
      if (isset($_SERVER['QUERY_STRING'])) {
        $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
        $insertGoTo .= $_SERVER['QUERY_STRING'];
      }
       header("Location: " . $insertGoTo);
    }
    ?>

  8. #8
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Tu as toujours une erreur "headers already sent" ?

  9. #9
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Tu as regardé le lien que te donne Eusebius au moins... .. .

    @ tchaOo°

  10. #10
    Rédacteur
    Avatar de MasterOfChakhaL
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    2 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 147
    Points : 3 264
    Points
    3 264
    Par défaut
    Salut,

    Mettre ceci a la fin de ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		$file = '';
    		$line = 0;
    		headers_sent(  $file , $line );
    		echo "<pre>Fichier : $file\nLine    : $line</pre>";
    ... te permettra de savoir à quel moment ont été envoyés tes headers...

  11. #11
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par MasterOfChakhaL
    Salut,

    Mettre ceci a la fin de ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		$file = '';
    		$line = 0;
    		headers_sent(  $file , $line );
    		echo "<pre>Fichier : $file\nLine    : $line</pre>";
    ... te permettra de savoir à quel moment ont été envoyés tes headers...
    Normalement le message d'erreur le donne déjà.

  12. #12
    Rédacteur
    Avatar de MasterOfChakhaL
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    2 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 147
    Points : 3 264
    Points
    3 264
    Par défaut
    oui... effectivement...

    j'ai plus les yeux en face des trous

  13. #13
    Membre éclairé
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Points : 687
    Points
    687
    Par défaut
    Salut !

    2 remarques :

    - il faut toujours un exit() après header(location !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header("Location: " . $insertGoTo);
    exit();
    - si tu as fait des inclusions de fichiers auparavant (ex : include("mesfonction.php"); ), vérifie qu'à la fin de ces fichiers il n'y a pas de retour à la ligne après le ?>, on ne les voit pas et ça peux tout faire planter...

    Voilà, j'espère que ça pourra t'aider !
    A+

  14. #14
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut Attention!!!
    Une chose primordiale à connaître est que si avant ton header tu as des includes et que dans ces fichiers inclus il y a des sauts de ligne après ?> alors il t'enverra un headers sent

    exemple de fichier appelé entièrement en PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    /* Le code de la page: cela peut être une classe aussi */
    ?>
    Remarquez les deux lignes blanches (sauts de ligne avec 'Entrée') après le ?>.

    Si ce fichier est appelé par un autre et que suite à cet appel il y a un header plus loin dans le fichier appelant, alors à l'affichage, il y aura le warning de header sent

  15. #15
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par MasterOfChakhaL
    Salut,

    Mettre ceci a la fin de ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		$file = '';
    		$line = 0;
    		headers_sent(  $file , $line );
    		echo "<pre>Fichier : $file\nLine    : $line</pre>";
    ... te permettra de savoir à quel moment ont été envoyés tes headers...
    il m'affiche ke l'erreur est dans la ligne
    header("Location: " . $insertGoTo);

  16. #16
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par zyongh
    Une chose primordiale à connaître est que si avant ton header tu as des includes et que dans ces fichiers inclus il y a des sauts de ligne après ?> alors il t'enverra un headers sent

    exemple de fichier appelé entièrement en PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    /* Le code de la page: cela peut être une classe aussi */
    ?>
    Remarquez les deux lignes blanches (sauts de ligne avec 'Entrée') après le ?>.

    Si ce fichier est appelé par un autre et que suite à cet appel il y a un header plus loin dans le fichier appelant, alors à l'affichage, il y aura le warning de header sent
    g verifié tout les fichier inclus... et il n'ya aucun saut de ligne...
    lé il est ou le probleme..
    est ce que du javascript peut etre a l'origine..
    car dan le code il ya dy java script mé aussi aucun de saut de ligne..

  17. #17
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par The_Duck
    il m'affiche ke l'erreur est dans la ligne
    header("Location: " . $insertGoTo);
    QUELLE erreur ? donne le message en entier

  18. #18
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    ob_start() en début de code et ob_end_flush() à la fin et tu n'auras plus de problèmes.

    Je te laisse consulter la doc à ce sujet.

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    hello,

    @Eusebius: relis le premier post --> message d'erreur en ligne 50.

    pour m'amuser j'ai fait un copier coller du code fourni par the duck dans un editeur :
    le header se trouve en ligne 45...

    quel étrange mystere se cache derriere tout cela ? hmmm...


  20. #20
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par xave
    ob_start() en début de code et ob_end_flush() à la fin et tu n'auras plus de problèmes.

    Je te laisse consulter la doc à ce sujet.
    C'est vrai, ça marche, mais est-ce que ça serait pas mieux s'il comprenait ce que c'est qu'un header avant...

Discussions similaires

  1. [PHP-JS] Problème sur le header : headers already sent
    Par sliderman dans le forum Langage
    Réponses: 4
    Dernier message: 21/02/2008, 12h54
  2. [PHP-JS] headers already sent
    Par jive dans le forum Langage
    Réponses: 5
    Dernier message: 29/08/2006, 00h56
  3. [PHP-JS] problème headers already sent
    Par charlene44 dans le forum Langage
    Réponses: 12
    Dernier message: 14/06/2006, 13h55
  4. [Cookies] Warning : headers already sent
    Par arti2004 dans le forum Langage
    Réponses: 8
    Dernier message: 04/04/2006, 16h31
  5. [JpGraph] Header already sent
    Par grunk dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 09/02/2006, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo