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 :

header déjà envoyé -> une fonction en remplacement de header() ?


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 192
    Par défaut header déjà envoyé -> une fonction en remplacement de header() ?
    Bonjour,

    Mon petit site est composé d'un index.php qui me sert à la structure du document, et qui insert d'autres éléments, dont une page centrale.

    Dans cette page, je voudrais pouvoir me servir de la fonction header(), on d'un équivalent, afin de me permettre de changer de page, le problème c'est que c'est l'index.php qui envoie le header, et donc PHP de laisser mes pages incluses les changer.

    J'obtiens ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Warning: Cannot modify header information - headers already sent by (output started at /var/www/localhost/htdocs/index.php:7) in la_page at la_ligne
    La question est existe-t-il une fonction me permettant de forcer le changement de page, bien que ce ne soit pas la page appellant la fonction qui génère le header.

    Cordialement,
    mathias

  2. #2
    Invité
    Invité(e)
    Par défaut
    salut


    http://php.developpez.com/faq/?page=...s_already_sent

    il n'y a pas d'"équivalent" à la fonction header(), elle est la seule à manipuler les entêtes HTTP qui sont le seul moyen de faire une redirection côté serveur.

  3. #3
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Tu peux aussi jeter un oeil sur la gestion des buffers.
    http://fr3.php.net/manual/fr/ref.outcontrol.php
    bbye

  4. #4
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 192
    Par défaut
    Un grand merci

    Et... désolé pour la réponse dans la FAQ

    J'ai trouvé mon bonheur ici, dans la partie sur les redirections.

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    N'oublie pas de toujours fournir une explication pour la redirection : http://mathieu-lemoine.developpez.co...iels/web/http/ et le manuel PHP sur la fonction header(). Si tu ne le fais pas, cela fonctionnera mais tu auras des problèmes de référencement.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 120
    Par défaut
    Bonjour,

    j'ai le meme problème que precedement mais pour ma part je n'arrive pas à corriger l'erreur de la fonction header

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\gestion incidentsv2\pageinsertbd.php:8) in c:\program files\easyphp1-8\www\gestion incidentsv2\pageinsertbd.php on line 36
    Quelqu'un peux m'aider ? voici mon code

    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
     
    <body>
    <?	
    	// Redirection vers une autre page
    	$categ = $HTTP_POST_VARS["categ"];
    	$domaine = $HTTP_POST_VARS["domaine"];
    	$statut = $HTTP_POST_VARS["statut"];
    	$priorite1 = $HTTP_POST_VARS["priorite1"];
    	$priorite2 = $HTTP_POST_VARS["priorite2"];
    	$nature = $HTTP_POST_VARS["nature"];
    	$typ = $HTTP_POST_VARS["Typ"];
    	$sujet = $HTTP_POST_VARS["sujet"];
    	$description = $HTTP_POST_VARS["description"];
     
        // Connection
        $link = mysql_connect("localhost", "root", "");
     
    	mysql_select_db("incidents") or die(mysql_error());
     
    	// Protection des caracteres spéciaux
    	  $sujet_protec = mysql_real_escape_string($sujet);
    	  $description_protec = mysql_real_escape_string($description);
     
        // Insertion valeur du formulaire
          $query="INSERT INTO `ticket` VALUES ('','1','$statut','$priorite1','$priorite2','$nature','','$categ','$domaine','$typ','$sujet_protec','$description_protec','')";
    	  $insert_formulaire = mysql_query($query)OR die( mysql_error());
     
     
     
    header ('Location : PageViewTicketV5.php');
    	  exit;
    ?>
    </body>

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Je te propose de regarder dans la FAQ PHP, tu y trouveras la réponse.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 120
    Par défaut
    oui j'ai bien vu les infos dans la fac :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Voici une liste (non exhaustive) de ce qui cause l'envoi des en-têtes :
     
        * un "echo"
        * un affichage hors PHP (c'est à dire de l'HTML en dehors du code)
        * un ou plusieurs retours chariots avant la balise "<?php"
        * une fonction qui rencontre une erreur et affiche un message (par exemple l'utilisation de la fonction "mysql_connect" avec de mauvais paramètres)
    
    Tout ceci ne doit pas être fait avant l'utilisation de fonctions qui modifient les en-têtes comme "header" ou "session_start" entre autres.
    mais dans mon cas je ne vois pas ce qui bloque ?

  9. #9
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 192
    Par défaut
    C'est pourtant évident...

    Regarde ta première ligne, relis la faq, corriges

    a+

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 120
    Par défaut


    je suis le seul à ne pas voir l'erreur ? j'ai enlevé un retour chariot au cas ou mais toujours rien .....

    c'est quoi novices?

  11. #11
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Il y a quelque chose avant le tag <? : c'est suffisant.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 120
    Par défaut
    ben non comme ca non plus ca ne marche pas

    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
    <body><?	
    	// Redirection vers une autre page
    	$categ = $HTTP_POST_VARS["categ"];
    	$domaine = $HTTP_POST_VARS["domaine"];
    	$statut = $HTTP_POST_VARS["statut"];
    	$priorite1 = $HTTP_POST_VARS["priorite1"];
    	$priorite2 = $HTTP_POST_VARS["priorite2"];
    	$nature = $HTTP_POST_VARS["nature"];
    	$typ = $HTTP_POST_VARS["Typ"];
    	$sujet = $HTTP_POST_VARS["sujet"];
    	$description = $HTTP_POST_VARS["description"];
     
        // Connection
        $link = mysql_connect("localhost", "root", "");
     
    	mysql_select_db("incidents") or die(mysql_error());
     
    	// Protection des caracteres spéciaux
    	  $sujet_protec = mysql_real_escape_string($sujet);
    	  $description_protec = mysql_real_escape_string($description);
     
        // Insertion valeur du formulaire
          $query="INSERT INTO `ticket` VALUES ('','1','$statut','$priorite1','$priorite2','$nature','','$categ','$domaine','$typ','$sujet_protec','$description_protec','')";
    	  $insert_formulaire = mysql_query($query)OR die( mysql_error());
     
    	header ('Location : PageViewTicketV5.php');
    	exit;
    ?>
    </body>

  13. #13
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 192
    Par défaut


    Perso je ne te répondrai plus sur ce message, tu n'as qu'à réfléchir, c'est à croire que tu le fais exprès, j'en suis à me demander si tu ne serait pas juste un gamin qui s'ennuie et s'amuse à poster n'importe quoi sur les forums...

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 120
    Par défaut
    Je comprends pas meme avec ce code : ca ne marche pas


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Untitled Document</title>
    </head>
    <body><?
    	header ('Location : TestHeader.php');
    	exit();
    ?>
    </body>
    </html>

    j'ai l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\gestion incidentsv2\testheader.php:7) in c:\program files\easyphp1-8\www\gestion incidentsv2\testheader.php on line 8

  15. #15
    Membre Expert
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Par défaut
    Allez parceque je suis de bonne humeur aujourd'hui malgré le temps pourri

    Je te cite

    Voici une liste (non exhaustive) de ce qui cause l'envoi des en-têtes :

    * un "echo"
    * un affichage hors PHP (c'est à dire de l'HTML en dehors du code)
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 120
    Par défaut
    ok merci ya pas de quoi s'enerver !!

  17. #17
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 192
    Par défaut
    Si.

  18. #18
    Membre éclairé Avatar de jacquesh
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Par défaut
    jette un coup d'oeil sur les fonctions ob_start() & ob_clean()... ca peut être util... mais toutes les réponses sont dans la doc...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/02/2014, 21h22
  2. Envoyer un paramètre à une fonction.
    Par Squalthor dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/10/2006, 17h40
  3. Réponses: 3
    Dernier message: 15/12/2005, 22h04
  4. Envoyer résultat d'une popup vers son window.parent
    Par LFC dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/12/2004, 11h18
  5. Réponses: 12
    Dernier message: 27/08/2003, 11h04

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