Header + body a votre avis ?

Résolu
Edouard73 Messages postés 139 Date d'inscription   Statut Membre Dernière intervention   -  
Edouard73 Messages postés 139 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   211
 
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   Statut Membre Dernière intervention   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
Edouard73 Messages postés 139 Date d'inscription   Statut Membre Dernière intervention   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