Header + body a votre avis ?

Résolu/Fermé
Edouard73 Messages postés 139 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 2 avril 2013 - 5 mai 2008 à 11:35
Edouard73 Messages postés 139 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 2 avril 2013 - 5 mai 2008 à 15:11
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

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