Posté(e) le 21 novembre 200519 a 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 Modifié le 21 novembre 200519 a par Siron
Posté(e) le 21 novembre 200519 a 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...
Posté(e) le 21 novembre 200519 a Auteur 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 ?
Posté(e) le 21 novembre 200519 a Ben tu t'arranges autrement, par exemple en faisant le test qui décide de la redirection tout en haut de la page...
Posté(e) le 21 novembre 200519 a 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)
Posté(e) le 22 novembre 200519 a Auteur 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.
Posté(e) le 22 novembre 200519 a 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)
Posté(e) le 22 novembre 200519 a Auteur 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.
Posté(e) le 25 novembre 200519 a <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...
Posté(e) le 26 novembre 200519 a 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 Modifié le 26 novembre 200519 a par mc-sin
Posté(e) le 26 novembre 200519 a 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>'; }
Posté(e) le 26 novembre 200519 a 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? Modifié le 26 novembre 200519 a par mc-sin
Posté(e) le 26 novembre 200519 a 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.
Posté(e) le 26 novembre 200519 a PHP + JAVASCRIPT = Pour une redirection tu crois pas? A utiliser uniquement en cas d'urgence extrème
Posté(e) le 27 novembre 200519 a 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 Modifié le 27 novembre 200519 a par mc-sin
Posté(e) le 27 novembre 200519 a Auteur <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 ?
Posté(e) le 29 novembre 200519 a 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...
Posté(e) le 30 novembre 200519 a 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.
Posté(e) le 1 décembre 200519 a 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
Posté(e) le 2 décembre 200519 a Auteur 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.
Posté(e) le 3 décembre 200519 a 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]);
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.