Header + body a votre avis ?

Résolu
Edouard73 Messages postés 150 Statut Membre -  
Edouard73 Messages postés 150 Statut Membre -
Bonjour,

j'aimerai savoir si il y a un moyen de faire fonctionner le header suivant

<?php
ob_start();
header('location: http://www.okpc.fr/croisesimperiaux/v3/index.php'); //Exemple correct
ob_end_flush();
?>

entre les balises <body></body> ?

j'y arrive super bien avant le doctype mais âpres j'ai le message d'erreur already send...

je pose la question pour savoir si je suis condamné à faire des codes php avec header uniquement en haut de la page ou alors existe t'il une autre solution ?

merci d'avance pour l'aide.
Configuration: Windows XP
Firefox 2.0.0.14

2 réponses

  1. Tiller Messages postés 783 Statut Membre 211
     
    Haut de page uniquement, d'après moi.
    Au pire pour la redirection tu peux faire en javascript..
    0
  2. Kcazer Messages postés 26 Statut Membre 21
     
    Comme l'indique leur nom, les header sont envoyé en en-tête des pages, ils est donc absolument necessaire de les envoyer en haut de page, avant n'importe quel autre contenu, sous peine d'obtenir une erreur.

    Une solution possible pour contourner ce probleme est d'utiliser la mise en memoire tampon (ob_start, ob_flush) de cette maniere:
    <?php
    ob_start();
    ?>
    <html>
    <head>.....</head>
    <body>...
    <?php
    header('Location: url'); // header a envoyer
    ?>
    ....</body>
    </html>
    <?php
    ob_flush();
    ?>
    

    De cette maniere, le code html et les header seront mis en cache, jusqu'a la fin du script, puis envoyé dans l'ordre correct (cad headers puis html)

    Code ecrit sans verification, mais le principe est là ;)
    0
    1. Edouard73 Messages postés 150 Statut Membre 11
       
      haaa c'est super cool ça

      je viens de test ton code et ça marche nikel

      donc grace à

      <?php
      ob_start();
      ?>

      placé avant <html>

      et

      <?php
      ob_flush();
      ?>

      apres </html>

      le header passe super bien.

      merci
      0