|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : octobre 2006 Messages : 131 ![]() |
Salut !
J'utilise la fonction "header(location: ...)" après celle "include(...)" ce qui a pour effet de générer le message : "Warning cannot modify header information". Cela est compréhensible puisque le fichier que j'inclus dans "include" contient du code HTML, mais alors comment puis-je procéder pour utiliser "header" dans un tel cas ? Merci ! |
|
|
00
|
|
|
#2 | |
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
Citation:
Un header ce met en tout premier dans une page PHP. See you. |
|
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2007 Messages : 27 ![]() |
J'ai eu déjà des problèmes similaires il me semble avec les header(location...)
Il faut que l'instruction soit la dernière à la dernière ligne du code obligatoirement et que ton code ne contienne pas d'espace et de saut de ligne inutile. Je ne comprends pas pourquoi, ça doit être un bug. N'empêche que tu enlèves tous les espaces et sauts de lignes en trop et par miracle ça marche ! Enfin... ça a marché pour moi |
|
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2007 Messages : 27 ![]() |
??? mince alors j'ai dit une bêtise? Faudrait que j'aille me coucher !!
je vais fouiller dans mon code... |
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2007 Messages : 27 ![]() |
Je n'ai pas dit de bêtise, il faut bien mettre l'instruction header(location...) à la toute fin du code, sans html après évidemment, mais surtout sans espaces qui trainent avant ... et hop! ça marche
|
|
|
00
|
|
|
#6 |
![]() ![]() Alain Sahli Ingénieur développement logiciels Inscription : décembre 2004 Messages : 1 086 ![]() |
les header tu dois les déclarer avant que tu n'affiche qqch... donc pas de echo pas de code html rien... c'est pas compliqué
|
|
00
|
|
|
#7 |
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
Dans son cas il y a du HTML dans l'include ... donc c'est bien au tout début. (Et d'ailleur tout le temps :o)
Par contre on à pas vraiment répondu à sa question :') Mais pour y répondre (comment utiliser header avec une include), et bien je ne vois pas bien l'interet, car même dans l'éventualité ou ceci était possible, le code HTML que tu aurais include disparaitrait ... Donc tu peux expliquer un peu plus ce que tu veux faire ? Merci d'avance. |
|
|
00
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2007 Messages : 27 ![]() |
Mais là si j'ai bien compris, c'est pas déclarer un header, c'est appeler la fonction header en php... donc à mettre en dernier dans le code d'une page qui contient que du code php et qui n'affiche rien et pour diriger vers une autre page d'affichage
|
|
|
00
|
|
|
#9 |
![]() ![]() Alain Sahli Ingénieur développement logiciels Inscription : décembre 2004 Messages : 1 086 ![]() |
oui mais dès le moment ou tu appelles la fonction header tu dois le faire avant toute chose... que ce soit un location ou type de donnée... Peut tu me montrer un cas concret ou sa ne marche pas ?
|
|
00
|
|
|
#10 |
|
Membre à l'essai
![]() Inscription : octobre 2006 Messages : 131 ![]() |
Merci à tous pour vos réponses.
Voici quelques éclaircissements: Dans le "include" je possède le background HTML de ma page (header, menu, footer). En revanche, la page qui appelle le fichier HTML par "include" est un formulaire en PHP qui doit pouvoir rediriger l'utilisateur après soumission du formulaire ou en cas d'erreur. Devrais-je donc renoncer à utiliser "include" pour procéder avec header(location)". Merci à tous ! |
|
|
00
|
|
|
#11 | ||
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
Tu peux très bien faire un
Code :
|
||
|
|
00
|
|
|
#12 |
|
Membre à l'essai
![]() Inscription : octobre 2006 Messages : 131 ![]() |
Merci SpiritOfDoc, cela est une excellente idée.
|
|
|
00
|
|
|
#13 | |
|
Nouveau Membre du Club
![]() Inscription : janvier 2007 Messages : 27 ![]() |
Désolée, j'ai vérifié mais j'avais tort effectivement
Citation:
Il n'empêche que mon header("location...") tout à la fin fonctionne très bien lui aussi alors je l'y laisse, ça me parait plus logique (on passe à la page suivante une fois qu'on a fini le traitement, par exemple valorisé les paramètres get de la location.... A moins que quelqu'un me montre le contraire (je suis preneuse de toute explication). Merci ! |
|
|
|
00
|
|
|
#14 | |
|
Expert Confirmé
![]() ![]() Inscription : décembre 2003 Messages : 3 717 ![]() |
Citation:
Lorsqu'on demande une page dans le navigateur, le serveur réponds en deux temps : une phase de "négociation des headers", où le serveur renvoie toutes les entêtes, puis une phase "envoi du contenu". Ces deux séquences doivent se suivre dans cet ordre, une fois que du contenu a été envoyé, impossible de revenir à la première phase. Donc un saut de ligne mal placé, ou un espace peut être considéré comme du contenu, et donc déclencher la phase 2. PS : Le traitement pur en PHP ne pose aucun soucis, puisqu'il n'est exécuté que sur le serveur. En revanche, le moindre echo, print, ... déclenche un renvoi au navigateur, et est alors assimilé à du contenu, donc après l'étape d'entête
__________________
Globalement inoffensif Merci de respecter les règles du forum. Aucune question technique par MP ! _______________________________________________________________________ La rubrique Ruby / Rails recrute. Contactez moi ! _______________________________________________________________________ Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS Tutoriaux HTML/CSS et PHP |
|
|
|
00
|
|
|
#15 |
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
Tu trouvera plus d'explications dans la FAQ là :
http://php.developpez.com/faq/?page=...s_already_sent
__________________
Modérateur PHP |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com