November 21, 200520 yr Bonjours, je cherche le moyen de rediriger sur une page via php. J'ai essayé avec header("location: url"); mais il m'affiche le message d'erreur : Warning: Cannot modify header information - headers already sent by (output started at url:13) in url on line 142 Url = l'adresse du dossier source du site dans le message d'erreur. Comment faire ? Merci d'avance pour les réponses. Siron Edited November 21, 200520 yr by Siron
November 21, 200520 yr Comme indiqué dans la doc PHP, tu ne dois faire aucun output avant d'utiliser la fonction Header. Donc, pas de echo, pas de print, pas même une ligne blanche avant le bloc php où tu appelles Header. -> voir la doc...
November 21, 200520 yr Author Comme indiqué dans la doc PHP, tu ne dois faire aucun output avant d'utiliser la fonction Header. Donc, pas de echo, pas de print, pas même une ligne blanche avant le bloc php où tu appelles Header. -> voir la doc... Et si la redirection doit se trouver en plein millieu d'une page web ?
November 21, 200520 yr Ben tu t'arranges autrement, par exemple en faisant le test qui décide de la redirection tout en haut de la page...
November 21, 200520 yr Tu as ob_start(). Qui permet de bufferiser le contenu avant de l'envoyer au navigateur. (c'est d'ailleurs une astuce pour rendre le traîtement plus rapide => envoi navigateur == LONG)
November 22, 200520 yr Author J'ai trouvé un truc simple qui fonctionne, mais heu, je suis pas sur que se soit conforme aux standards : echo '<meta http-equiv="Refresh" content="1;URL=page2.html">' Je crois que c'est pas conforme aux standards parceque cette ligne se trouve dès lors dans le body et non dans le head. Mais quoi qu'il en soit ça marche bien en casi instantané. Maintenant je suis confronté à une autre inconnue : Comment vider les variable $_GET[''] aussitôt que on en à plus besoin ? J'ai tenté naivement le $_GET[''] = ""; mais non, ça marche pas lol.
November 22, 200520 yr en général on vide pas les GET. Mais unset(...) ira très bien. Et sinon, les redirections meta sont males car elles cassent le bouton "retour" (selon le W3, dans les astuces du validateur)
November 22, 200520 yr Author Flute ma suis trompé, c'est pas des variables get mais des post, j'ai tenté avec unset, mais ça na pas l'air de fonctionner.
November 25, 200520 yr <meta http-equiv="Refresh" content="1;URL=page2.html"> >>>c'est pa du PHP c'est du html et c'est beaucoup plus facil de faire une redirection en html que en php, pk se prendre la tete ? 1 petite ligne suffit...
November 26, 200520 yr En faite par exemple tu fais un test: if ($_GET["url"]==page1) { include "page1.html"; } else { die('<meta http-equiv="Refresh" content="1;URL=page2.html">'); } Vlà qui est fait Edited November 26, 200520 yr by mc-sin
November 26, 200520 yr Pour les redirections sauvages en milieu de page, j'utilise cette fonction PHP (pas ultra-propre, mais ça fonctionne) : // fonction de redirection function redir($url){ echo '<script language="javascript">'; echo 'window.location="'.$url.'";'; echo '</script>'; }
November 26, 200520 yr Pour les redirections sauvages en milieu de page, j'utilise cette fonction PHP (pas ultra-propre, mais ça fonctionne) : // fonction de redirection function redir($url){ echo '<script language="javascript">'; echo 'window.location="'.$url.'";'; echo '</script>'; } PHP + JAVASCRIPT = Pour une redirection tu crois pas? Edited November 26, 200520 yr by mc-sin
November 26, 200520 yr En faite par exemple tu fais un test: if ($_GET["url"]==page1) { include "page1.html"; } else { die('<meta http-equiv="Refresh" content="1;URL=page2.html">'); } Vlà qui est fait Et avec juste un <? include "page2.html"; ?> Ça devrait faire une redirection transparente non ? Une question que je me posais.
November 26, 200520 yr PHP + JAVASCRIPT = Pour une redirection tu crois pas? A utiliser uniquement en cas d'urgence extrème
November 27, 200520 yr PHP + JAVASCRIPT = Pour une redirection tu crois pas? A utiliser uniquement en cas d'urgence extrème Ok mais le: die('<meta http-equiv="Refresh" content="1;URL=page2.html">'); est certainement plus "propre"... car ça reste du PHP Edited November 27, 200520 yr by mc-sin
November 27, 200520 yr Author <meta http-equiv="Refresh" content="1;URL=page2.html"> >>>c'est pa du PHP c'est du html et c'est beaucoup plus facil de faire une redirection en html que en php, pk se prendre la tete ? 1 petite ligne suffit... C'est ce que j'ai utilisé. Et personne ne sait comment vider les variables post ?
November 29, 200520 yr Oui j'ai essayé, et ça marche pas J'ai une page où je fais ça, mais je reposte la page directement après avoir fait le unset $_POST; . C'est peut-être pour ça que ça fonctionne...
November 30, 200520 yr Reposte = actualise ? Oui, je rappelle ma page avec ma fonction sauvage redir() : // fonction de redirection sauvage function redir($url){ echo '<script language="javascript">'; echo 'window.location="'.$url.'";'; echo '</script>'; } Attention : à n'utiliser qu'en cas d'extrème urgence.... Normalement, un header() serait plus correct.
December 1, 200520 yr j'ai pas tous lu mais rediriger avec le PHP est impossible après le moindre affichage en bon script tu ne doit afficher ton text que en fin d'exécution de script, de cette manière la redirection avec le header est efficace sinon la seul solution est le javascript en cours d'affichage mais bcp moins propre. un script php doit etre décomposé en différenciant bien le script qui traite l'information et celui qui traite l'affichage. dans tous les bon script l'affichage est géré en template (sorte de masque d'affichage), seul gros hic c'est de bien comprende ce type de fonctionnement qui demande de l'expérience et surtout de la patience. l'idéal est de trouver un bon script complet et de l'adapter en utilisant ces fonctions internes. exemple de mon site adaptation de phpbb avec un gestionnaire de page
December 2, 200520 yr Author Mais pour la redirection j'ai ce qu'il faut avec la balise meta. C'est vraiment un truc pour vider la "mémoire cache des variables post" que je cherche. gvos_net ==> je vais essayer quand j'ai le temps et je te tients au courrant.
December 3, 200520 yr C'est vraiment un truc pour vider la "mémoire cache des variables post" que je cherche. Un truc du genre : $keys = array_keys($_POST); foreach($keys as $key) unset ($_POST[$key]);
Archived
This topic is now archived and is closed to further replies.