Menu

Include et header [Résolu/Fermé]

Houssine@ 30 Messages postés jeudi 2 juin 2016Date d'inscription 25 mai 2017 Dernière intervention - 30 nov. 2016 à 19:51 - Dernière réponse : Houssine@ 30 Messages postés jeudi 2 juin 2016Date d'inscription 25 mai 2017 Dernière intervention
- 1 déc. 2016 à 16:20
bonsoir
j'ai mis un include dans ma page et quand j''ai voulu faire un header pour aller a une autre page
il m'affiche cette erreur
(Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\menuresponsive.php:94) in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\class\connexion.class.php on line 58)
et quand j'ai mis mon header() avant l'include il n'affichait plus cet message
je voudrais savoir pourquoi ?
merci d'avance
Afficher la suite 

5 réponses

DelNC 1604 Messages postés samedi 25 octobre 2014Date d'inscription 22 juin 2018 Dernière intervention - 30 nov. 2016 à 19:58
0
Merci
Bonjour

sur le site que je fais, il y a plusieurs partie que je mets dans les pages grâce à des include.

Voilà un exemple
<html>
<?php include("include_header.php");   ?>
<body>
.....
Houssine@ 30 Messages postés jeudi 2 juin 2016Date d'inscription 25 mai 2017 Dernière intervention - 30 nov. 2016 à 21:39
je sais que je peux faire plusieurs include dans la meme page ma question est pourqueoi quannd je faisais un include("exemple.php") suivie par un header("location: exemple.php") mon code ne fonctionne plus et il m'affichais cette cet message
(Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\menuresponsive.php:94) in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\class\connexion.class.php on line 58)
jisisv 3662 Messages postés dimanche 18 mars 2001Date d'inscriptionModérateurStatut 15 janvier 2017 Dernière intervention - 30 nov. 2016 à 22:12
Le message d'erreur est clair. Les en-têtes HTTP (header(...) en PHP)doivent être envoyées avant le code HTML. Lis bien le message d'erreur.
Reivax962 3240 Messages postés jeudi 16 juin 2005Date d'inscription 25 juin 2018 Dernière intervention - 1 déc. 2016 à 14:41
0
Merci
Bonjour,

Pour expliquer un peu les choses.
Quand le serveur PHP renvoie une réponse au navigateur client, il commence par envoyer les en-têtes http (les "header" en question). Ces "header" contiennent des choses comme l'adresse de la page, les cookies à placer, le statut de la réponse, le type de réponse...
Ensuite seulement, il envoie le contenu, c'est-à-dire tout ce qui est explicitement envoyé (les "echo") ou implicitement (le code html en dehors des balises <?php ?>).

Dans les faits, dès que PHP voit du contenu à envoyer, il va :
- générer les headers et les envoyer ;
- commencer à envoyer le contenu de la réponse.

Maintenant, si, après ce premier envoi, tu demandes à modifier les headers (par exemple, avec session_start() qui place un cookie, ou avec une redirection comme dans ton cas, ou en changeant le type de réponse...), PHP ne peut plus le faire, car il a déjà transmis les header au client.
C'est le sens du message d'erreur que tu obtiens.

Il faut donc s'assurer que toutes les fonctions qui modifient les headers soient exécutées AVANT de commencer à envoyer du contenu au client. Donc avant toute commande "echo" et avant tout texte en dehors de balises <?php ?>

Xavier
Houssine@ 30 Messages postés jeudi 2 juin 2016Date d'inscription 25 mai 2017 Dernière intervention - 1 déc. 2016 à 16:20
merci beaucoup Reivax962 pour votre explication