IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Utilisation de Header(location)


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 149
    Points : 59
    Points
    59
    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 !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Points : 422
    Points
    422
    Par défaut
    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.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    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

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Points : 31
    Points
    31
    Par défaut
    ??? mince alors j'ai dit une bêtise? Faudrait que j'aille me coucher !!
    je vais fouiller dans mon code...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    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

  6. #6
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    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é

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Points : 422
    Points
    422
    Par défaut
    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.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Points : 31
    Points
    31
    Par défaut
    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

  9. #9
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    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 ?

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 149
    Points : 59
    Points
    59
    Par défaut
    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 !

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Points : 422
    Points
    422
    Par défaut
    Tu peux très bien faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (erreur truc machin) {
    include('une page');
    exit();
    }

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 149
    Points : 59
    Points
    59
    Par défaut
    Merci SpiritOfDoc, cela est une excellente idée.

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    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 !

  14. #14
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    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

  15. #15
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 327
    Points : 15 670
    Points
    15 670
    Par défaut
    Tu trouvera plus d'explications dans la FAQ là :
    http://php.developpez.com/faq/?page=...s_already_sent

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PHP : Utilisation de header location avec replace
    Par rjl dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/07/2012, 18h32
  2. Comment utiliser la fonction Header(Location..)
    Par arti2004 dans le forum Langage
    Réponses: 3
    Dernier message: 10/04/2006, 17h42
  3. Actualiser une page après un "header location"
    Par salva57 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 15
    Dernier message: 10/01/2006, 22h09
  4. header('Location:$url') VS session_start()
    Par Paniez dans le forum Langage
    Réponses: 2
    Dernier message: 02/12/2005, 22h30
  5. [FTP] problème header("location:......")
    Par K4trix dans le forum Langage
    Réponses: 23
    Dernier message: 30/11/2005, 11h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo