Header()

Résolu
w_minisplash_w Messages postés 20 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 3 juillet 2006 - 9 juil. 2005 à 13:18
w_minisplash_w Messages postés 20 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 3 juillet 2006 - 10 juil. 2005 à 02:06
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

cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
9 juil. 2005 à 15:49
<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 !
3
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 9
9 juil. 2005 à 22:07
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>
0
w_minisplash_w Messages postés 20 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 3 juillet 2006
10 juil. 2005 à 02:06
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...
0