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 } ?>
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 :