Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
977 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Cannot modify header information - headers already sent

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Cannot modify header information - headers already sent

n°2167354
titi63
Posté le 09-12-2012 à 11:48:45  profilanswer
 

Bonjour à tous
 
je suis chez 1&1 pour l"hébergement de mes sites, suite a un upgrade de services chez eux, j'ai un message d'erreur sur tous mes formulaires de contact.
 
http://www.gite-la-tronchere.fr/cont...e-puy-dome.php
http://www.planete-sports.fr/inscrip...ultisports.php
http://www.bergheaud.fr/contact.php
 
et il y en a d'autres...
 
avez vous une idée pour régler ce PB qui semble être identique sur chacun de mes site car j'ai une bonne dizaine de formulaires dans ce cas!
 
merci de votre aide

mood
Publicité
Posté le 09-12-2012 à 11:48:45  profilanswer
 

n°2167357
x1fr
Posté le 09-12-2012 à 12:11:32  profilanswer
 

A priori il y a des appels à session_start() qui sont fait alors que du contenu a déjà été envoyé au navigateur.
 
cf manuel :
 

Citation :

Pour utiliser des sessions basées sur les cookies, session_start() doit être appelée avant d'afficher quoi que ce soit dans le navigateur.


 
Il faudrait vérifier, il ne faut rien qu'il y ait avant le session_start(). Même un retour à la ligne avant le <?php suffit à afficher cette erreur.
 
Donc en gros, il faut que le fichier commence par <?php (pas d'espace, pas de retour à la ligne), et que session_start() soit appellé avant le ?> et toute fonction qui affiche du contenu du style echo.


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
n°2167360
titi63
Posté le 09-12-2012 à 12:31:14  profilanswer
 

voici le début de mon index.php
 

Citation :

<?php
session_start();
$cryptogramme = TRUE; //Cryptogramme pour éviter le spam TRUE = activé, FALSE = désactivé
$format = 'html';  // Mettez ici le format de l'email, pour html mettez 'html', pour le format texte mettez 'texte'
$foncmail = 'mail'; // Si votre hébergeur permet la fonction mail mettez 'mail', sinon vous pouvez utiliser smtp en mettant 'smtp'


Message édité par titi63 le 09-12-2012 à 12:32:28
n°2167381
titi63
Posté le 09-12-2012 à 15:10:50  profilanswer
 

j'ai bien vérifié les espaces et retour à la ligne mais tjrs le message d'erreur  
 
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /homepages/37/d141117866/htdocs/BER/contact.php:5) in /homepages/37/d141117866/htdocs/BER/for/index.php on line 2

n°2167412
x1fr
Posté le 10-12-2012 à 08:49:04  profilanswer
 

Tout est expliqué dans le message d'erreur : dans ta page contact.php, il y a quelque chose à la ligne 5 qui envois du contenu, et ça se passe avant d’exécuter ta page index.php


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
n°2167598
titi63
Posté le 11-12-2012 à 21:52:43  profilanswer
 

merci pour cette précision mais dans contact.php j'ai mon <head> de la ligne 3 à 14, donc ligne 5 rien ne peut envoyer du contenu...

n°2167613
x1fr
Posté le 12-12-2012 à 08:47:34  profilanswer
 

Eh bien ton <head>, c'est du contenu, si tu inclus la page index.php après c'est donc normal.
 
Ca serait plus simple si on avait aussi le contenu de contact.php (au moins les premières lignes) :p


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
n°2167735
titi63
Posté le 12-12-2012 à 17:44:45  profilanswer
 

Ah oui j'ai un include avec mon index dedans bien plus bas
Mais si je le déplace il ne sera plus au bon endroit sur ma page web?
comment faire pour mettre l'include avant le head?
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
<meta name="keywords" content="lavaur, b&eacute;chade, soudure, m&eacute;cano, issoire, chaudronnerie" />
<meta name="description" content="une dizaine de mots diff&eacute;rent sur chaque page" />  
<link href="style.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.ico" /><!-- pour IE -->
<link rel="icon" type="image/gif" href="/img/favicon.gif" /><!-- pour les navigateurs standards -->
<style type="text/css">
</style>
<link rel="stylesheet" type="text/css" href="for/contact.css" />
</head>
<body>
 <div id="all">
 <div class="ban">  
<div class="B" style="height: 185px; width: 172px">
 <object type="application/x-shockwave-flash" data="img/B.swf" style="width: 177px; height: 198px">
        <param name="movie" value="img/B.swf" />
        <param name="quality" value="high" />
        <param name="wmode" value="transparent" />
        <p>Installez le plugin Flash pour voir l&#39;animation : <a href="http://www.adobe.com/go/gntray_dl_getflashplayer_fr" title="LienPlugin">Cliquez ici pour le télécharger</a></p>
  </object>
</div>
<div class="ergheaud">
 <object type="application/x-shockwave-flash" data="img/ergheaud.swf" width="339" height="121">
        <param name="movie" value="img/ergheaud.swf" />
        <param name="quality" value="high" />
        <param name="wmode" value="transparent" />
        <p>Installez le plugin Flash pour voir l&#39;animation : <a href="http://www.adobe.com/go/gntray_dl_getflashplayer_fr" title="LienPlugin">Cliquez ici pour le télécharger</a></p>
  </object>
</div>
 
 
</div>
 
 <div class="bandroite">  
<div id="citation">
 
 <object type="application/x-shockwave-flash" data="img/stars.swf" width="330" height="134">
        <param name="movie" value="img/stars.swf" />
        <param name="quality" value="high" />
        <param name="wmode" value="transparent" />
        <p>Installez le plugin Flash pour voir l&#39;animation : <a href="http://www.adobe.com/go/gntray_dl_getflashplayer_fr" title="LienPlugin">Cliquez ici pour le télécharger</a></p>
  </object>
 
  </div>
 
<div id="flag">
<div id="drfr"><a href="contact.php"> <img alt="Francais" src="img/img-transparent.gif" width="50" height="25" /></a></div>
<div id="dral"><a href="contact.php">    <img alt="Allemand" src="img/img-transparent.gif" width="50" height="25" /></a></div>
<div id="dren"><a href="contact.php">    <img alt="Anglais" src="img/img-transparent.gif" width="50" height="25" /></a></div>
 
</div></div>
 
 
 <div class="nav">
 <div class="navcontenu">
 <div class="B1"><div class="txtbtnnormalbk"><a href="chaudronnerie.html">Chaudronnerie</a></div>
  <a href="chaudronnerie.html"><img alt="Chaudronnerie" src="img/chaudronnerie2130.JPG" width="130" height="90" class="bordureimage" /></a><br/>
  <a href="chaudronnerie.html"><img alt="chaudronnerie" src="img/boutonmenu.png" width="130" height="35" class="bordureimage" /></a></div>
 <div class="B2"><div class="txtbtnnormalbk"><a href="mecano-soudure.html">M&eacute;cano-soudure</a></div><img alt="mécano-soudure" src="img/mecano-soudure-1130.jpg" width="130" height="90" class="bordureimage" /><br/><img alt="Mécano Soudure" src="img/boutoneit.jpg" width="130" height="35" class="bordureimage" /></div>
 <div class="B3"><div class="txtbtnnormalbk"><a href="usinage.html">Usinage</a></div><img alt="Usinage" src="img/usinage-1130.jpg" width="130" height="90" class="bordureimage" /><br/><img alt="chaudronnerie" src="img/boutoneit.jpg" width="130" height="35" class="bordureimage" /></div>
 <div class="B4"><div class="txtbtnnormalbk"><a href="equilibrage.html">Equilibrage</a></div><img alt="Equilibreuse Schenk" src="img/Equilibreuse-Schenk-130.JPG" width="130" height="90" class="bordureimage" /><br/><img alt="chaudronnerie" src="img/boutoneit.jpg" width="130" height="35" class="bordureimage" /></div>
 <div class="B5"><div class="txtbtnrebk"><span lang="fr">
  <a href="remise-en-etat-d-equipements.html">Remise en &eacute;tat d'&eacute;quipements</a></span></div><img alt="Remise en état" src="img/remise-en-etat-3130.jpg" width="130" height="90" class="bordureimage" /><br/><img alt="chaudronnerie" src="img/boutoneit.jpg" width="130" height="35" class="bordureimage" /></div>
   
   
 <br />
 </div>
 </div>
 
 <div class="txt">
 
 <div class="index"><a href="index.html">
 <img alt="accueil" src="img/accueil.png" width="23" height="90" /></a>
 </div>
 
 <div class="plaquette">  
 <object type="application/x-shockwave-flash" data="img/plaquette.swf" width="139" height="229">
        <param name="movie" value="img/plaquette.swf" />
        <param name="quality" value="high" />
        <param name="wmode" value="transparent" />
        <p>Installez le plugin Flash pour voir l&#39;animation : <a href="http://www.adobe.com/go/gntray_dl_getflashplayer_fr" title="LienPlugin">Cliquez ici pour le t&eacute;l&eacute;charger</a></p>
  </object>
  </div>
   
 <div class="contenucontact">
  <div class="contact">
   <p class="txtactivites">  
<?php
include( 'for/index.php' );
?>
&nbsp;
</p>
  </div>
  <div class="droite">
   <h1><br />
   Contactez nous</h1>
   <p>Vous pouvez remplir ce formulaire <br />
   ou utiliser notre adresse mail :<br />
   
..........
etc...
 
 
 
 

Message cité 1 fois
Message édité par titi63 le 12-12-2012 à 17:45:53
n°2167742
x1fr
Posté le 12-12-2012 à 18:02:20  profilanswer
 

Tout dépend de ce que fait index.php en fait.
 
Si comme je le pense il se contente de traiter la validation du formulaire, il ne devrait pas y avoir de problème. Cette fois, ça dépend du contenu de for/index.php
 
Le plus simple c'est de tester non?


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
n°2167754
egege
Posté le 12-12-2012 à 18:24:25  profilanswer
 

titi63 a écrit :

Ah oui j'ai un include avec mon index dedans bien plus bas
Mais si je le déplace il ne sera plus au bon endroit sur ma page web?
comment faire pour mettre l'include avant le head?


ton include est une fonction php. Et ton session_start() est dans le fichier inclus c'est bien ça ?
 
Si c'est le cas tu as la solution à ton problème. Tu as du code PHP avant ton session_start  
 
 ;)

mood
Publicité
Posté le 12-12-2012 à 18:24:25  profilanswer
 

n°2167781
titi63
Posté le 12-12-2012 à 20:37:29  profilanswer
 

Si je modifie la position de l'include de mon contact.php, ça me change le formulaire de place, donc ce n'est pas bon
Tester quoi?
voici le contenu de mon index.php :  
 
<?php if(session_id()=='') { session_start(); }
$cryptogramme = TRUE;
$format = 'html';
$foncmail = 'mail';
$hostsmtp = '';
$portsmtp = '25';
$authsmtp = true;
$usersmtp = '';
$passmtp = '';
$included_files = get_included_files();
require(dirname(__FILE__).'/include/fonctions.php');
if(VerifUrl($_SERVER['REQUEST_URI'], $included_files, dirname(__FILE__))){
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
 <title>Formulaire de contact</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <meta name="revisit-after" content="1">
 <meta name="description" content="EXmail 1.2">
 <meta name="keywords" content="exmail">
 <meta name="robots" content="ALL">
 <meta name="distribution" content="Global">
 <meta name="rating" content="General">
 <meta name="copyright" content="Steuf">
 <meta name="author" content="Steuf">
 <link rel="stylesheet" type="text/css" href="contact.css">
</head>
<body>
<?php
}
if (isset($_POST['submit'])){
$to = 'xxx@free.fr' ;
$subject = 'Demande depuis www.xxx.fr' ;
 
 if(!CheckEmail($_POST['email'])){
  $error[] = '<p class="erreur">Votre adresse Email n\'est pas valide !</p>';
 }
 if((empty($_POST['cryptogramme']) or $_POST['cryptogramme'] !== $_SESSION['captcha-control']) and $cryptogramme === TRUE){
  $error[] = '<p class="erreur">Cryptogramme invalide !</p>';
 }
 if(empty($_POST['tel'])){
$error[] = '<p class="erreur">Vous n\'avez pas mis votre num&eacute;ro de t&eacute;l&eacute;phone !</p>';
}
 if(isset( $_FILES['upload_localfile']['tmp_name']) and is_uploaded_file($_FILES['upload_localfile']['tmp_name'])){
  $destination = dirname(__FILE__).'/upload/'.$_FILES['upload_localfile']['name'];
  if(move_uploaded_file($_FILES['upload_localfile']['tmp_name'], $destination)){
   $uploadinfo = '<p class="erreur">Upload R&eacute;ussi</p>';
  }
 }
 else {
  $uploadinfo = '<p class="erreur"><p>';
 }
 if(!isset($error) or empty ($error)) {
  $reqclass = dirname(__FILE__).'/include/class.phpmailer.php';
  require_once ( $reqclass );
  $mail = new PHPmailer();
  if($foncmail === 'mail'){
   $mail->IsMail();
  }
  elseif($foncmail === 'smtp'){
   $mail->IsSMTP();
   $mail->Host = $hostsmtp;
   $mail->Port = $portsmtp;
   $mail->SMTPAuth = $authsmtp;
   $mail->Username = $usersmtp;
   $mail->Password = $passmtp;
  }
  if($format === 'html'){
   $mail->IsHTML(true);
  }
  elseif($format === 'texte'){
   $mail->IsHTML(false);
  }
  $mail->From = $_POST['email'];
  $mail->FromName = $_POST['nom'];
  $mail->AddAddress( $to );
  $mail->Subject = $subject ;
  $mail->Body = stripslashes( $body );
  if(isset($destination)){
   $mail->AddAttachment( $destination );
  }
  if(!$mail->Send()){
   echo '<p class="erreur">Erreur fonction mail() :</p>';
   echo $mail->ErrorInfo;
  }
  else{
   echo $uploadinfo;
   echo '<p class="erreur">&nbsp;</p><p class="erreur">Formulaire envoy&eacute; !</p><p class="erreur">Merci de votre message!</p><p class="erreur">Vous allez recevoir une r&eacute;ponse tr&egrave;s prochainement.</p></p>';
  }
  unset($mail);
 }
 else {
  foreach($error as $errormsg){
  echo $errormsg;
  }
  echo '<p class="erreur">Le Formulaire n\'a pas &eacute;t&eacute; envoy&eacute;</p>
   <p class="erreur">Veuillez recommencer !</p>';
 }
 if (isset($destination)){
  unlink($destination);
 }
}
if (((isset($error) or !empty ($error)) and isset($_POST['submit'])) or  !isset($_POST['submit'])){
 include(dirname(__FILE__).'/formulaire.php');
}
 
if(VerifUrl($_SERVER['REQUEST_URI'], $included_files, dirname(__FILE__))){
$body = '<html>
<head>
<title>Recontacter cette personne</title>
    </head>
    <body>
      <br>Texte :'.$_POST['comment'].'
      <br>téléphone :'.$_POST['tel'].'
      <br><br><br>Cliquer sur "répondre" pour donner une réponse par mail
      </body>
   </html>';
   ?>
</body>
</html>
<?php }

n°2167782
x1fr
Posté le 12-12-2012 à 20:49:45  profilanswer
 

essaye alors de placer

Citation :

<?php if(session_id()=='') { session_start(); } ?>


 
tout au début de ta page contact.php (même pas un retour à la ligne ou un espace avant), sans rien changer d'autre


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
n°2167786
titi63
Posté le 12-12-2012 à 21:01:52  profilanswer
 

egege a écrit :


ton include est une fonction php. Et ton session_start() est dans le fichier inclus c'est bien ça ?

 

oui c'est bien cela
ça veux dire qu'il faut que je déplace mon session_start dans mon fichier contact.php ?
j'ai essayé mais cela me donne

 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /homepages/37/d141117866/htdocs/BER/contact.php:7) in /homepages/37/d141117866/htdocs/BER/contact.php on line 93

 

et j'ai toujours mon head avant mon include


Message édité par titi63 le 12-12-2012 à 21:03:15
n°2167793
titi63
Posté le 12-12-2012 à 21:47:37  profilanswer
 

x1fr a écrit :

essaye alors de placer

Citation :

<?php if(session_id()=='') { session_start(); } ?>


 
tout au début de ta page contact.php (même pas un retour à la ligne ou un espace avant), sans rien changer d'autre


 
Jackpot, c'est bien ça
Merci à vous d'avoir consacré un peu de votre temps à me répondre
 :)  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Cannot modify header information - headers already sent

 

Sujets relatifs
Header Content Footer en CssUn espace entre ma page et mon header : comment le virer ?
Problème image d'un header qui se décale sous IEProblème étrange d'inclusion de header
reconstruire bases de données mysql et information_schemaWarning: Cannot modify header information - headers already sent by..
Cannot modify header information - headers already sent by[PHP] Warning: Cannot modify header information - headers already...
Warning: Cannot modify header information - headers already sent bypb avec le"Cannot modify header information - RESOLU
Plus de sujets relatifs à : Cannot modify header information - headers already sent


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR