Problème de Redirection avec Die

[Résolu]
Signaler
Messages postés
119
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
26 novembre 2009
-
Messages postés
119
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
26 novembre 2009
-
Bonjour,




Bon là je suis pommé. Je fait mes redirection à l'aide de cette méthode :




$url = "http://localhost/index_admin.php?page=/modules/article/VoirAllArticle.php";


die('<meta http-equiv="refresh" content="0;URL='.$url.'">');




(je n'utilise pas header, car j'en ai déjà un dans un include, et ça bug tout le temps).




Jusque maintenant ça a toujours très bien fonctionné. Mais depuis hier,
allez savoir pourquoi, sur certaines pages ça ne fonctionne plus. Je
n'ai pourtant rien changé :


L'url ne change pas, mais le fond de la page est blanc. Quand j'actualise (F5), il redirige bien.


Et le pire c'est qu'en regardant la source de la page le code de redirection est là :




<meta http-equiv="refresh" content="0;URL=http://localhost/index_admin.php?page=/modules/article/VoirAllArticle.php">




Quelqu'un peut il m'expliquer ce qu'il se passe ?

12 réponses

Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

ouep... essaye de faire un echo et ensuite un die... sachant (à vérifier je n'en suis pas sur) que la meta doit être entre les balises <head></head> mais bon c'est crade quand même... mieux vaudrait un header... m'enfin bon... .. .

@ tchaOo°
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
4
ob_start();
ob_end_flash() dans ce cas précis.

Cependant, c'est pas spécialement comme ca qu'on travaille :

=> code php
=> include ('frame_du_haut.php');
=> include ('menu_a_gauche.php');
=> include ('central.php');
=> include ('bas.php');

Et si c'est pas central.php que tu dois appeler, mais login.php par exemple, bah tu recommences :

=> code php
=> include ('frame_du_haut.php');

=> include ('menu_a_gauche.php');
=> include ('login.php');

=> include ('bas.php');

Et la, t'aura jamais un problème de header !!
Assuré !
Autrement, faut se servir du cache.
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
4
Alors dans un autre cas :

Tu gardes tout envoi de HTML dans une variable genre $buffer et à la fin de chaque page (j'imagine que y'a un footer.php) :

=> Code PHP.
=> include ('page_demandé.php');
// Chaque page possède une variable nommé $buffer qui contient tout le code html en sortie.
// De ce fait, tout le code PHP qui doit être exécuté dans page_demandé.php peut se faire tranquilement

=> include ('frame_du_haut.php');
=> include ('menu_a_gauche.php');
echo $buffer;
=> include ('bas.php');
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
4
Bah le die(); quoi :o
Messages postés
119
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
26 novembre 2009

Ok pour ta remaque sur les balises. Ca doit sûrement jouer.



Mais en fait, je viens de faire des tests sous IE, et ça fonctionne
très bien. Le problème viendrai donc de Mozilla qui n'accèpterai pas ce
genre de redirection...
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

Oui il faut bien les déclarer dans l'entête... comme IE ne respecte pas les norme il accepte la meta mais pas Mozilla... .. . ;o)

http://www.allhtml.com/metatags/index.php

@ tchaOo°
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Salut,

" (je n'utilise pas header, car j'en ai déjà un dans un include, et ça bug tout le temps)."

ah bon ?

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
119
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
26 novembre 2009

Oui. Enfin pas vraiment, ce que je voulais
dire c'est que je travail avec un index qui charge chaque partie
indépendantes. Un fichier en haut, un fichier central et un fichier en
bas. Comme celui du haut contient du code Html mis en forme à l'aide de
style css, il existe une balise <header>. Et comme ma redirection
se fait dans la page centrale => Problème. Parce que le haut de la
page a déjà écrit du code...



En fait d'après mes recherche, il n'est pas rare de travailler de cette
façon, mais je ne vois pas comment utiliser une redirection utilisant
header dans ma page central si du code a déjà été écrit dans la page du
haut... Il doit y avoir une méthode, mais laquelle ?...
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
En même temps inclure trente six pages pour la structure du site c'est pas vraiment comme ça qu'on travaille non plus ^^

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

Ou utiliser un moteur de template pour séparer le traitement des données et leur affichage... c'est le footer qui balance la sauce dont plus de problème d'envoi des header... .. .

@ tchaOo°
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
enfin si t'as besoin de perfs reste sur une solution de ob_start() et ob_end_flush() ça sera largement plus performant qu'un moteur de templates, tout ça pour une redirection...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
119
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
26 novembre 2009

Merci pour toutes vos réponses. Je
pense que je vais pencher pour la solution du $buffer qui ne nécessite
pas de réorganiser tout le site... Je le serai pour la prochaine fois.