Header()

Résolu
Signaler
Messages postés
20
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
3 juillet 2006
-
Messages postés
20
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
3 juillet 2006
-
Salut,

J'ai un petit problème avec la fonction header() :
J'ai une page form.htm qui renvoie les données vers la page envoi.php :
<?
session_start();
if (isset($_POST)) {
foreach ($_POST as $key => $value) {
if ($value=='') {
header("Location: http://monsite.com/mapage.htm");
}
$_SESSION["$key"]=$value;
}
} else {header("Location: http://monsite.com/mapage.htm");}
?>
Vous l'avez sans doute compris, je veux faire une redirection si les données transmises par $_POST sont vides.
Et devinez koi ? Ca marche pas !
Alors siouplai si vous avez une petite idée, je suis preneur !

Merci de votre aide !!!

3 réponses

Messages postés
1352
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
19 novembre 2008
2
<tt></tt>fonction <tt>header</tt>
doit être appelée
avant que le moindre contenu ne soit envoyé, soit par des
lignes HTML habituelles dans le fichier, soit par des affichges
PHP. Une erreur très classique est de lire un fichier avec

<tt>include</tt>
ou
<tt>require</tt>
,
et de laisser des espaces ou des lignes vides, qui génèreront
un affichage avant que la fonction
<tt>header</tt>

ne soit appelée. Le même problème existe avec les fichiers
PHP/HTML standards.


Utilises cette fonction :



function redirection($page) {

echo "<script language='Javascript'>";

echo "<!--\r\n";

echo "location.href = "$page";\r\n";

echo "// -->";

echo "</script>\r\n";

}
PS: Si votre problème est résolu, prière de bien vouloir clôturer votre message par une réponse acceptée !
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Salut,



remplace <? par <?php



garde ensuite ta fonction header et met ça tout en haut de ta page php : ob_start();



et tout en bas : ob_end_flush();



ça fonctionne sur tous les navigateurs, ça ne génère pas de code javascript et donc c'est pas crade (lol)



a +

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
20
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
3 juillet 2006

C'est effectivement plus propre que du js mais ce qui m'étonne quand même c'est que le code que j'ai donné dans mon premier post, il était bien placé en haut de ma page, il n'y avait donc aucune sortie avant.

Mais j'ai trouvé une autre solution, j'ai carrément fait :
if (empty ($_POST)) header(...)
Et ça marche donc la vie est belle.

Je pense aussi que le fait que header() soit dans une boucle (cf mon premier post) n'arrange pas le truc...