Headers already sent

Signaler
-
 freebike -
Bonjour à tous

Je suis en recherche d'info concernant ce message d'erreur :
http://www.bergheaud.fr/contact.php

J'ai essayé plusieurs choses trouvées ici et là :
supprimer les espaces et retour a la ligne en début de fichier
convertir les fichiers en UTF8 sans BOM

il y a 2 fichiers avec l'instruction session_start() et j'ai vérifié les 2 fichiers, les voici :

index

<?php if(session_id()=='') { session_start(); }
//<?php
//session_start();
//////////////////////////////////////
// Configuration de l'envoi du mail //
//////////////////////////////////////
$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'
 
/////////////////////////////////////////////////////////////////////////////////////
// Configuration SMTP ( Si vous n'utilisez pas SMTP ne pas configurer ces champs ) //
/////////////////////////////////////////////////////////////////////////////////////
 
 
$hostsmtp = ''; // Mettez ici l'hôte SMTP par exemple 'smtp.free.fr'
$portsmtp = '25'; // S'il faut utiliser un autre port que le port 25 spécifiez le ici
$authsmtp = true; // Si le serveur demande une authentification laissez true, s'il n'y a pas besoin d'authentification mettez false et
  // ignorez les champs suivant
$usersmtp = ''; // Mettez ici le login d'accés au serveur SMTP. Par exemple :  'toto'
$passmtp = ''; // Mettez ici votre mot de passe d'accés au serveur SMTP. Par exemple : 'Mon_mot_de_pass'
 
///////////////////////
// FIN CONFIGURATION //
///////////////////////
$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>

<?php
}
if (isset($_POST['submit'])){
///////////////////
// CONFIGURATION //
///////////////////
$to = 'xxxxxxxxxx@wanadoo.fr' ; // Mettez ici, là ou les adresses emails ( Séparées d'une virgule ) auquels le mail doit être envoyé.
$subject = 'Recontacter cette personne' ;	 // Mettez ici le sujet de votre mail
// Dans body vous avez le corps du mail, ici nous mettons les variables du champs commentaire $comment, 
// vous pouvez mettre bien entendu plusieurs variables avec du texte au format html ou texte selon votre choix.
// Attention ! Comme vous le voyez dans l'exemple, le texte doit être entre des Appostrophes , alors que les Variable 
// venant du formulaire doivent être en dehors et de la forme .$_POST['nom']. ( Ne pas oublier les points )
// Attention ! Si vous mettez une appostrophe dans le texte elle doit être précédée de \ Exemple :
// Si je veus écrire : J'y vais , il faut mettre : J\'y vais.
 
$body = '<html>
<head>
<title>Recontacter cette personne</title>
</head>

 
Commentaire : '.$_POST['comment'].'
 
Téléphone : '.$_POST['tel'].'
 

Cliquer sur "répondre" pour donner une réponse par mail
 
</html>';	
// Si l'adresse email n'est pas valide, on met un message d'erreur (CheckEmail() ===> Fonction de vérification de la validité de l'adresse email)
if(!CheckEmail($_POST['email'])){
$error[] = 'Votre adresse Email n\'est pas valide !

';
}
 
// On vérifie que les champs obligatoires sont remplis, s'il n'est pas rempli on dirige vers un message d'erreur, pour vérifier d'autres champs
// Du formulaire que vous allez créer vous n'avez qu'à recopier les deux lignes si dessous et de remplacer la variable $_POST['nom'] par celle
// de la partie du formulaire que vous voulez rendre obligatoire. Ainsi que le message en html que vous voulez mettre en cas d'erreur.
 
 
 
// Vérification Cryptogramme
if((empty($_POST['cryptogramme']) or $_POST['cryptogramme'] !== $_SESSION['captcha-control']) and $cryptogramme === TRUE){
$error[] = 'Cryptogramme invalide !

';
}
 
// Vérification telephone
if(empty($_POST['tel'])){
$error[] = 'Vous n\'avez pas mis votre numéro de téléphone !

';
}
///////////////////////
// FIN CONFIGURATION //
///////////////////////
 
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 = 'Upload Réussi

';
}
}
else {
$uploadinfo = '';
}
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 'Erreur fonction mail() :

'; 
echo $mail->ErrorInfo;
}
else{	
echo $uploadinfo;
echo 'Formulaire envoyé !Merci de votre message!Vous allez recevoir une réponse très prochainement.http://www.gite-la-tronchere.fr

';
}
unset($mail);
}
else {
foreach($error as $errormsg){
   echo $errormsg;
}
echo 'Le Formulaire n\'a pas été envoyé


Veuillez recommencer !

';
}
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__))){
?>

</html>
<?php } ?>


image.php

<?php if(session_id()=='') { session_start(); }
//<?php 
//session_start();
include_once dirname( __FILE__ ).'/captcha.class.php';
$captcha = new captcha();
$captcha->setStringLenght(4);
$captcha->setTextColor( 0, 0, 51 );
$captcha->setFont( dirname( __FILE__ ) .'/tahomabd.ttf', 12 );
$captcha->setShadow();
$captcha->setShadowColor( 235, 240, 248 );
$captcha->setTextAngle( 3 );
$captcha->getImage();
$_SESSION['captcha-control'] = $captcha->getRandString();
?>


toujours le message d'erreur, avez vous une idée?

2 réponses

Le message d'erreur était celui ci :

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/virtual/w4a122409/ca63.fr/contact.php:7) in/var/www/virtual/w4a122409/ca63.fr/contact/index.php on line 2

Solution :
J’ai ajouté ceci tout en haut de mon contact.php :

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