Siron Posté(e) le 21 novembre 2005 Partager Posté(e) le 21 novembre 2005 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 21 novembre 2005 Partager Posté(e) le 21 novembre 2005 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... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Siron Posté(e) le 21 novembre 2005 Auteur Partager Posté(e) le 21 novembre 2005 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 ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 21 novembre 2005 Partager Posté(e) le 21 novembre 2005 Ben tu t'arranges autrement, par exemple en faisant le test qui décide de la redirection tout en haut de la page... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 21 novembre 2005 Partager Posté(e) le 21 novembre 2005 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) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Siron Posté(e) le 22 novembre 2005 Auteur Partager Posté(e) le 22 novembre 2005 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 22 novembre 2005 Partager Posté(e) le 22 novembre 2005 unset Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 22 novembre 2005 Partager Posté(e) le 22 novembre 2005 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) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Siron Posté(e) le 22 novembre 2005 Auteur Partager Posté(e) le 22 novembre 2005 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
be-cool Posté(e) le 25 novembre 2005 Partager Posté(e) le 25 novembre 2005 <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... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fab23 Posté(e) le 26 novembre 2005 Partager Posté(e) le 26 novembre 2005 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
gvosnet Posté(e) le 26 novembre 2005 Partager Posté(e) le 26 novembre 2005 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>'; } Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fab23 Posté(e) le 26 novembre 2005 Partager Posté(e) le 26 novembre 2005 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? Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 26 novembre 2005 Partager Posté(e) le 26 novembre 2005 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
gvosnet Posté(e) le 26 novembre 2005 Partager Posté(e) le 26 novembre 2005 PHP + JAVASCRIPT = Pour une redirection tu crois pas? A utiliser uniquement en cas d'urgence extrème Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fab23 Posté(e) le 27 novembre 2005 Partager Posté(e) le 27 novembre 2005 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Siron Posté(e) le 27 novembre 2005 Auteur Partager Posté(e) le 27 novembre 2005 <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 ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
gvosnet Posté(e) le 28 novembre 2005 Partager Posté(e) le 28 novembre 2005 T'as essayé ça ? UNSET $_POST; Lien vers le commentaire Partager sur d’autres sites More sharing options...
Siron Posté(e) le 28 novembre 2005 Auteur Partager Posté(e) le 28 novembre 2005 Oui j'ai essayé, et ça marche pas Lien vers le commentaire Partager sur d’autres sites More sharing options...
gvosnet Posté(e) le 29 novembre 2005 Partager Posté(e) le 29 novembre 2005 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... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Siron Posté(e) le 30 novembre 2005 Auteur Partager Posté(e) le 30 novembre 2005 Reposte = actualise ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
gvosnet Posté(e) le 30 novembre 2005 Partager Posté(e) le 30 novembre 2005 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Helfima Posté(e) le 1 décembre 2005 Partager Posté(e) le 1 décembre 2005 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Siron Posté(e) le 2 décembre 2005 Auteur Partager Posté(e) le 2 décembre 2005 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
astero-H Posté(e) le 3 décembre 2005 Partager Posté(e) le 3 décembre 2005 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]); Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.