Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/01/2007, 21h03   #1
Membre à l'essai
 
Inscription : octobre 2006
Messages : 131
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 131
Points : 24
Points : 24
Par défaut Utilisation de Header(location)

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 !
jakkihm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2007, 21h28   #2
Membre éclairé
 
Inscription : août 2006
Messages : 379
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : août 2006
Messages : 379
Points : 383
Points : 383
Citation:
Envoyé par jakkihm
J'utilise la fonction "header(location: ...)" après celle "include(...)"
Faut pas chercher plus loin

Un header ce met en tout premier dans une page PHP.

See you.
SpiritOfDoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2007, 21h30   #3
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 27
Points : 31
Points : 31
Par défaut une piste

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
tanita-twist est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2007, 21h31   #4
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 27
Points : 31
Points : 31
??? mince alors j'ai dit une bêtise? Faudrait que j'aille me coucher !!
je vais fouiller dans mon code...
tanita-twist est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2007, 21h38   #5
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 27
Points : 31
Points : 31
Par défaut il faut bien mettre header(location...) à la fin !!!

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
tanita-twist est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2007, 21h41   #6
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
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é
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2007, 21h47   #7
Membre éclairé
 
Inscription : août 2006
Messages : 379
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : août 2006
Messages : 379
Points : 383
Points : 383
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.
SpiritOfDoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2007, 21h48   #8
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 27
Points : 31
Points : 31
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
tanita-twist est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2007, 21h50   #9
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
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 ?
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2007, 22h35   #10
Membre à l'essai
 
Inscription : octobre 2006
Messages : 131
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 131
Points : 24
Points : 24
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 !
jakkihm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2007, 22h46   #11
Membre éclairé
 
Inscription : août 2006
Messages : 379
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : août 2006
Messages : 379
Points : 383
Points : 383
Tu peux très bien faire un
Code :
1
2
3
4
if (erreur truc machin) {
include('une page');
exit();
}
SpiritOfDoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2007, 22h51   #12
Membre à l'essai
 
Inscription : octobre 2006
Messages : 131
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 131
Points : 24
Points : 24
Merci SpiritOfDoc, cela est une excellente idée.
jakkihm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 07h49   #13
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 27
Points : 31
Points : 31
Par défaut en réponse à Yoteco

Désolée, j'ai vérifié mais j'avais tort effectivement

Citation:
Envoyé par Yoteco
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 ?
J'ai essayé mon code avec le header("location au début... et ça marche ! Ca veut donc dire que le code php continue à s'exécuter alors que la page est redirigée... Je ne comprends pas trop la logique mais bon...
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 !
tanita-twist est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 08h23   #14
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
Citation:
Envoyé par tanita-twist
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.
Ce n'est absolument pas un bug, ni un mauvais codage de PHP, mais cela vient directement du protocole HTTP.

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
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 11h06   #15
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
Tu trouvera plus d'explications dans la FAQ là :
http://php.developpez.com/faq/?page=...s_already_sent
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h01.


 
 
 
 
Partenaires

Hébergement Web