Header + body a votre avis ?

[Résolu/Fermé]
Signaler
Messages postés
139
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
2 avril 2013
-
Messages postés
139
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
2 avril 2013
-
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.

2 réponses

Messages postés
781
Date d'inscription
mercredi 4 juillet 2007
Statut
Membre
Dernière intervention
14 septembre 2008
213
Haut de page uniquement, d'après moi.
Au pire pour la redirection tu peux faire en javascript..
Messages postés
26
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
13 août 2008
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à ;)
Messages postés
139
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
2 avril 2013
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