Aller au contenu | Aller au menu | Aller à la recherche
Si comme moi, vous avez l'habitude d'utiliser la fonction header('Location: mon_url.php'); pour rediriger vos visiteurs, méfiez-vous. Il faut ajouter un exit; après car, dans certains cas, la redirection ne se fait pas immédiatement et quelques lignes supplémentaires sont exécutées. J'ai cherché un bon moment avant de trouver cette solution dans la documentation PHP. Comme quoi, RTFM est toujours d'actualité.
Au passage, si vous utilisez HTTP 1.1, les URL doivent être absolues et non relatives. (header('Location: http://www.site.com/mon_url.php'); et non pas simplement header('Location: mon_url.php');)
jeudi 9 décembre 2004 à 22h34 -
PHP
Aucun rétrolien pour le moment.
Les rétroliens pour ce billet sont fermés.
![]()
Ce sont des solutions absolues pour pr?venir des erreurs. Mais si on maitrise le contexte de la redirection on peut ne pas utiliser exit. Bien sur qui peut le plus peut le moins :D
solo
le vendredi 10 décembre 2004 à 10h05
![]()
solo>Tout ? fait. Le souci c'est que je ne savais pas du tout, et je ne pense pas ?tre le seul, qu'il ?tait possible dans certains cas que l'ex?cution du script continue.
C'est surtout cela que je voulais soulign? vu que ?a am?ne des bugs tr?s difficiles ? d?busquer car apparemment incoh?rents.
JMF
le vendredi 10 décembre 2004 à 10h10
![]()
J'ai effectivement pass? un bon moment ? traquer un bug dans ce style. Ca sert de le?on de perdre 2 heures sur un probl?me comme ?a.
Nico
le vendredi 10 décembre 2004 à 21h30
![]()
Le probl?me est que tout le monde croit que cette fonction ne sert qu'? la redirection.
Une fois ex?cut?e, l'interpr?teur passe ? la ligne suivante. Normal quoi
Romain
le mardi 14 décembre 2004 à 22h12
![]()
J'utilise:
include('fichier.php');
exit;
pour ?viter les headers qui plantent de temps en temps
(et maintenant je m'interroge sur les redirections hors site de base)
pascaltje
le vendredi 7 janvier 2005 à 17h50
![]()
pascaltje> Les fonctions include() et header() n'ont rien ? voir. A moins que je ne sois fatigu?, ce qui n'est pas impossible vu que c'est la fin de semaine, le code que tu proposes ne remplit pas la fonction demand?e.
JMF
le vendredi 7 janvier 2005 à 18h06
![]()
Effectivement, ?a n'a rien ? voir...
mais tout d?pend de l'usage qu'on en fait:
si je dois faire une redirection (un choix de page) lors des tests de validation du contenu d'un formulaire, l'url je m'en fiche et je passe par l'include() qui a le m?me effet.
si la redirection est r?elle, alors header() .
pascaltje
le vendredi 7 janvier 2005 à 21h41
Les commentaires pour ce billet sont fermés.
© 2003-2008 Jean-Marc Fontaine - Tous droits réservés
XHTML - CSS - DotClear - Technorati
Les billets de ce blog sont sous licence Creative Commons
Fabien le vendredi 10 décembre 2004 à 01h29