Besoin d'aide sur un formulaire de contact svp

Résolu/Fermé
myriam_marmotte Messages postés 24 Date d'inscription mardi 29 juillet 2014 Statut Membre Dernière intervention 10 septembre 2015 - 29 juil. 2014 à 16:22
myriam_marmotte Messages postés 24 Date d'inscription mardi 29 juillet 2014 Statut Membre Dernière intervention 10 septembre 2015 - 6 août 2014 à 11:13
Bonjour à tous,
Novice en la matière, j'ai réussi à créer le site web de ma boite *youhou*
Sauf que je coince sur la programmation de l'envoi de mon formulaire de contact... tout s'affiche très bien, mais lorsque je soumets mon formulaire, je n'ai plus qu'une page blanche (oups, c'est là que ça commence à merdouiller), et le mail n'arrive pas (pas pratique, je le conçois).

Donc si l'un ou l'une d'entre vous acceptait de m'aider à y voir plus clair, je l'en remercie de tout coeur (à noter que je n'ai pas de formation web, j'apprends sur le tas, du coup je suis un peu paumée niveau vocabulaire et tout...).

Bref voici le code de mon formulaire :


<form id="contact" method="post" action="traitement_formulaire.php">
<p><i>Complétez le formulaire. Les champs marqué par </i><em>*</em> sont <em>obligatoires</em></p>
<fieldset>
<legend>Contact</legend>
<label for="nom">Nom <em>*</em></label>
<input id="nom" placeholder="Nom Prénom" autofocus required=""><br>
<label for="telephone">Téléphone</label>
<input id="telephone" type="tel" placeholder="exemple: 01xxxxxxxx" pattern="06[0-9]{8}"><br>
<label for="email">Email <em>*</em></label>
<input id="email" type="email" placeholder="prenom.nom@domaine.fr" required="" ><br>
<label for="adresse">Adresse</label>
<input id="adresse" type="text" placeholder="exemple : 10 rue de Rome" required=""><br>
</select> <label for="ville">Ville</label>
<input id="ville" type="text" required=""><br>
</select> <label for="cp">Code Postal</label>
<input id="cp" type="text" placeholder="xxxxx" required=""><br>
<label for="pays">Pays</label>
<select id="pays">
<option value="F" name="pays">France</option>
<option value="B" name="pays">Belgique</option>
<option value="S" name="pays">Suisse</option>
<option value="A" name="pays">Autre</option>
</select> <label for="autre_pays">Précisez</label>
<input id="autre_pays" type="text" required=""><br>
<label for="comments">Votre message <em>*</em></label>
<textarea id="comments"></textarea><br>
</fieldset>
<fieldset>
<legend>Recevoir notre newsletter </legend>
<label for="news_oui"><input id="oui" type="checkbox" name="news" value="oui"> Oui</label>
<label for="news_non"><input id="non" type="checkbox" name="news" value="non"> Non</label>

</fieldset>
<p><input type="submit" value="Soumettre"></p>
</form>


et le code du PHP (là j'ai "emprunté" le code sur un tuto, que j'ai essayé d'adapter à mon formulaire, donc la source du problème doit être quelque part ici...) :

<?php

$destinataire = 'dest@dest.fr';
$objet = 'contact depuis le site web'
$copie = 'oui'

// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu !";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

// Messages d'erreur du formulaire
$message_erreur_formulaire = "Vous devez d'abord <a href=\"contact.html\">envoyer le formulaire</a>.";
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

// on teste si le formulaire a été soumis
if (!isset($_POST['envoi']))
{
// formulaire non envoyé
echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
}
else
{
/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = htmlspecialchars(trim($text), ENT_QUOTES);
if (1 === get_magic_quotes_gpc())
{
$text = stripslashes($text);
}

$text = nl2br($text);
return $text;
};

/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
function IsEmail($email)
{
$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\'\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\'\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
return (($value === 0) || ($value === false)) ? false : true;
}

// formulaire envoyé, on récupère tous les champs.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$telephone = (isset($_POST['telephone'])) ? Rec($_POST['telephone']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$adresse = (isset($_POST['adresse'])) ? Rec($_POST['adresse']) : '';
$ville = (isset($_POST['ville'])) ? Rec($_POST['ville']) : '';
$cp = (isset($_POST['cp'])) ? Rec($_POST['cp']) : '';
$pays = (isset($_POST['pays'])) ? Rec($_POST['pays']) : '';
$autre_pays = (isset($_POST['autre_pays'])) ? Rec($_POST['autre_pays']) : '';
$comments = (isset($_POST['comments'])) ? Rec($_POST['comments']) : '';
$news = (isset($_POST['news'])) ? Rec($_POST['news']) : '';


// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré

if (($nom != '') && ($email != '') && ($comments != ''))
{
// les 4 variables sont remplies, on génère puis envoie le mail
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n" .
'Reply-To:'.$email. "\r\n" .
'X-Mailer:PHP/'.phpversion();

// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.','.$email;
}
else
{
$cible = $destinataire;
};

// Remplacement de certains caractères spéciaux
$comments = str_replace("'","'",$comments);
$comments = str_replace("’","'",$comments);
$comments = str_replace(""",'"',$comments);
$comments = str_replace('<br>','',$comments);
$comments = str_replace('<br />','',$comments);
$comments = str_replace("<","<",$comments);
$comments = str_replace(">",">",$comments);
$comments = str_replace("&","&",$comments);

// Envoi du mail
if (mail($cible, $objet, $comments, $headers))
{
echo '<p>'.$message_envoye.'</p>'."\n";
}
else
{
echo '<p>'.$message_non_envoye.'</p>'."\n";
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p>'.$message_formulaire_invalide.' <a href="contact.html">Retour au formulaire</a></p>'."\n";
};
}; // fin du if (!isset($_POST['envoi']))
?>



Voilà,
Encore merci d'avance à celui ou celle qui voudra bien m'aider !!

10 réponses

Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
3 août 2014 à 20:11
Bonjour !
Ton fichier php ce nomme bien traitement_formulaire.php ? Car c'est vers la que ton formulaire pointe.

Sinon, ton script php test la présence d'un champ nommé "envoi", celui-ci n'existe pas dans ton formulaire et la condition n'est donc jamais rempli.
Rajoute un name='envoi' à ton <input type='submit'>
0
myriam_marmotte Messages postés 24 Date d'inscription mardi 29 juillet 2014 Statut Membre Dernière intervention 10 septembre 2015
5 août 2014 à 11:16
Bonjour,
Oui , mon fichier .php et le formulaire ont bien le même nom, c'est la 1ère vérif que j'ai faite ^^.

j'ai ajouté le champ name="envoi"... merci de m'avoir corrigé :)

j'ai ajouté aussi un
print_r($_POST)

Après avoir testé mon form, j'ai ce message en retour :
print_r($_POST)
Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur. Retour au formulaire

Une idée ?
Merci d'avance
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
5 août 2014 à 11:28
Salut,

Tu as une erreur de syntaxe sur la déclaration des variables $objet et $copie : il manque le point-virgule à la fin de l'instruction :
$destinataire = 'dest@dest.fr';
$objet = 'contact depuis le site web';
$copie = 'oui';


Je n'ai regardé plus loin si il y en a d'autres. Avec un IDE les erreurs de syntaxe sont mises en avant, tu peux alors les corriger plus facilement.

Bonne journée
0
myriam_marmotte Messages postés 24 Date d'inscription mardi 29 juillet 2014 Statut Membre Dernière intervention 10 septembre 2015
5 août 2014 à 11:35
Bonjour Pitet :)
Merci de t'être penché sur mon cas.
Oui je les avais remarqué depuis mon premier post...
Du coup je remet ici mon code corrigé :

<form id="contact" method="post" action="traitement_formulaire.php">
<p><i>Complétez le formulaire. Les champs marqué par </i><em>*</em> sont <em>obligatoires</em></p>
<fieldset>
<legend>Contact</legend>

<label for="nom">Nom <em>*</em></label>
<!--placeholder: indication grisée
required: il faut renseigner le champs sinon la validation est bloquée
//autofocus: le curseur est positionné dans cette case au chargement de la page-->
<input id="nom" placeholder="Nom Prénom" autofocus required=""><br>

<label for="ste">Société </label>
<input id="ste" placeholder="Société"><br>

<label for="telephone">Téléphone</label>
<!--type="tel": bascule le clavier sur un smartphone
// pattern: expression régulière à vérifier pour pouvoir valider-->
<input id="telephone" type="tel" placeholder="exemple: 01xxxxxxxx" ><br>

<label for="email">Email <em>*</em></label>
<input id="email" type="email" placeholder="prenom.nom@domaine.fr" required="" ><br>

<label for="adresse">Adresse</label>
<!-- type="number": bascule le clavier sur un smartphone-->
<input id="adresse" type="text" placeholder="exemple : 10 rue de Rome" ><br>
</select> <label for="ville">Ville</label>
<input id="ville" type="text" ><br>

</select> <label for="cp">Code Postal</label>
<input id="cp" type="text" placeholder="xxxxx" ><br>

<label for="pays">Pays</label>
<select id="pays">
<option value="F" name="pays">France</option>
<option value="B" name="pays">Belgique</option>
<option value="S" name="pays">Suisse</option>
<option value="A" name="pays">Autre</option>
</select> <label for="autre_pays">Précisez</label>
<input id="autre_pays" type="text" ><br>

<label for="comments">Votre message <em>*</em></label>
<textarea id="comments" required=""></textarea><br>
</fieldset>
<fieldset>

<legend>Recevoir notre newsletter </legend>
<label for="news_oui"><input id="oui" type="checkbox" name="news" value="oui"> Oui</label>
<label for="news_non"><input id="non" type="checkbox" name="news" value="non"> Non</label>

</fieldset>
<p><input type="submit" name="envoi" value="Soumettre"></p>
</form>


print_r($_POST)

<?php

$destinataire = 'test@test.fr';
$objet = 'contact depuis le site web' ;
$copie = 'oui' ;

// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu." ;
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

// Messages d'erreur du formulaire
$message_erreur_formulaire = "Vous devez d'abord envoyer le formulaire</a>.";
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

// on teste si le formulaire a été soumis
if (!isset($_POST['envoi']))
{
// formulaire non envoyé
echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
}
else
{
/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = htmlspecialchars(trim($text), ENT_QUOTES);
if (1 === get_magic_quotes_gpc())
{
$text = stripslashes($text);
}

$text = nl2br($text);
return $text;
};

/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
function IsEmail($email)
{
$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\'\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\'\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
return (($value === 0) || ($value === false)) ? false : true;
}

// formulaire envoyé, on récupère tous les champs.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$telephone = (isset($_POST['telephone'])) ? Rec($_POST['telephone']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$adresse = (isset($_POST['adresse'])) ? Rec($_POST['adresse']) : '';
$ville = (isset($_POST['ville'])) ? Rec($_POST['ville']) : '';
$cp = (isset($_POST['cp'])) ? Rec($_POST['cp']) : '';
$pays = (isset($_POST['pays'])) ? Rec($_POST['pays']) : '';
$autre_pays = (isset($_POST['autre_pays'])) ? Rec($_POST['autre_pays']) : '';
$comments = (isset($_POST['comments'])) ? Rec($_POST['comments']) : '';
$news = (isset($_POST['news'])) ? Rec($_POST['news']) : '';


// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré

if (($nom != '') && ($email != '') && ($comments != ''))
{
// les 4 variables sont remplies, on génère puis envoie le mail
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n" .
'Reply-To:'.$email. "\r\n" .
'X-Mailer:PHP/'.phpversion();

// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.','.$email;
}
else
{
$cible = $destinataire;
};


// Envoi du mail
if (mail($cible, $objet, $comments, $headers))
{
echo '<p>'.$message_envoye.'</p>'."\n";
}
else
{
echo '<p>'.$message_non_envoye.'</p>'."\n";
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p>'.$message_formulaire_invalide.' <a href="contact.html">Retour au formulaire</a></p>'."\n";
};
}; // fin du if (!isset($_POST['envoi']))
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
5 août 2014 à 11:58
Plusieurs remarques sur ton code :
- rassemble tes fonctions au début ou à la fin de ton code (code plus lisible)
- attention à l'indentation (code plus lisible)
- pas de point-virgule après une accolade
- (facultatif) pour vérifier le mail, tu pourrais remplacer ta regex par la fonction filter_var() avec le paramètre FILTER_VALIDATE_EMAIL (si tu as php >= 5.2) : https://www.w3schools.com/php/filter_validate_email.asp

Voici donc une version corrigé et formaté de ton code php :
<?php 

// print_r dans le php si tu veux voir ce qui est envoyé par ton formulaire
print_r($_POST);

$destinataire = 'test@test.fr'; 
$objet = 'contact depuis le site web';
$copie = 'oui';

// Messages de confirmation du mail 
$message_envoye = "Votre message nous est bien parvenu." ;
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP."; 

// Messages d'erreur du formulaire 
$message_erreur_formulaire = "Vous devez d'abord envoyer le formulaire</a>."; 
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur."; 

// on teste si le formulaire a été soumis 
if (!isset($_POST['envoi']))
{ 
	// formulaire non envoyé 
	echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
} 
else 
{
	// formulaire envoyé, on récupère tous les champs. 
	$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : ''; 
	$telephone = (isset($_POST['telephone'])) ? Rec($_POST['telephone']) : ''; 
	$email = (isset($_POST['email'])) ? Rec($_POST['email']) : ''; 
	$adresse = (isset($_POST['adresse'])) ? Rec($_POST['adresse']) : ''; 
	$ville = (isset($_POST['ville'])) ? Rec($_POST['ville']) : ''; 
	$cp = (isset($_POST['cp'])) ? Rec($_POST['cp']) : ''; 
	$pays = (isset($_POST['pays'])) ? Rec($_POST['pays']) : ''; 
	$autre_pays = (isset($_POST['autre_pays'])) ? Rec($_POST['autre_pays']) : ''; 
	$comments = (isset($_POST['comments'])) ? Rec($_POST['comments']) : ''; 
	$news = (isset($_POST['news'])) ? Rec($_POST['news']) : ''; 


	// On va vérifier les variables et l'email ... 
	$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré 

	if (($nom != '') && ($email != '') && ($comments != '')) 
	{ 
		// les 4 variables sont remplies, on génère puis envoie le mail 
		$headers = 'MIME-Version: 1.0' . "\r\n"; 
		$headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n" . 
		'Reply-To:'.$email. "\r\n" . 
		'X-Mailer:PHP/'.phpversion(); 

		// envoyer une copie au visiteur ? 
		if ($copie == 'oui') 
		{ 
			$cible = $destinataire.','.$email; 
		} 
		else 
		{ 
			$cible = $destinataire; 
		}


		// Envoi du mail 
		if (mail($cible, $objet, $comments, $headers)) 
		{ 
			echo '<p>'.$message_envoye.'</p>'."\n"; 
		} 
		else 
		{ 
			echo '<p>'.$message_non_envoye.'</p>'."\n"; 
		}
	} 
	else 
	{ 
		// une des 3 variables (ou plus) est vide ... 
		echo '<p>'.$message_formulaire_invalide.' <a href="contact.html">Retour au formulaire</a></p>'."\n"; 
	}
} // fin du if (!isset($_POST['envoi']))


/* 
* cette fonction sert à nettoyer et enregistrer un texte 
*/ 
function Rec($text) 
{ 
	$text = htmlspecialchars(trim($text), ENT_QUOTES);
	if (1 === get_magic_quotes_gpc()) 
	{ 
		$text = stripslashes($text); 
	} 

	$text = nl2br($text); 
	return $text; 
}

/* 
* Cette fonction sert à vérifier la syntaxe d'un email 
*/ 
function IsEmail($email) 
{ 
	$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\'\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\'\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email); 
	return (($value === 0) || ($value === false)) ? false : true; 
} 

?>


Si tu vois le message formulaire invalide, c'est que tes données ne sont pas correctement validée.
Avec le print_r($_POST) tu pourras remarquer que le nom n'est pas envoyé quand tu soumet ton formulaire car la balise input n'as pas d'attribut name.
C'est l'attribut name qui définit le nom du paramètre envoyé à php :
   <input id="nom" name="nom" placeholder="Nom Prénom" autofocus required="">


A vérifier pour les autres champs.

Bonne journée
0
myriam_marmotte Messages postés 24 Date d'inscription mardi 29 juillet 2014 Statut Membre Dernière intervention 10 septembre 2015
5 août 2014 à 15:01
Un grand merci pour ton aide !!!
Je reçois enfin quelque chose dans ma boite mail :)

Effectivement, avec un name="" ça fonctionne mieux...


Désolée de t'embêter encore, j'apprends certes, mais tout doucement...

ce que je ne comprends pas cette fois, c'est que lorsque je reçois l'email, je n'ai que le message, mais ça ne me renvoie pas les autres champs...

pourtant avec mon print_r($_POST), j'ai ceci :

Array ( [nom] => moi [ste] => arc en ciel [telephone] => [email] => trabucco@wanadoo.fr [ville] => monchy [cp] => 76260 [autre_pays] => [comments] => test [news] => oui [envoi] => Soumettre )
Votre message nous est bien parvenu.
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié par Pitet le 5/08/2014 à 15:10
Le message envoyé dans l'email correspond au troisième paramètre de la fonction mail, or pour l'instant tu lui transmet effectivement que le commentaire :
mail($cible, $objet, $comments, $headers)


Tu peux donc créer une nouvelle variable, $contenuMail par exemple, dans laquelle tu vas concaténer toutes les infos que tu veux faire apparaitre :
                // on crée le contenu du mail
  $contenuMail = '';
  $contenuMail .= 'Message de ' . $nom . "\r\n";
  $contenuMail .= 'Téléphone : ' . $telephone . "\r\n";
  $contenuMail .= 'Email : ' . $email . "\r\n";
  $contenuMail .= 'Message : ' . $comments . "\r\n";
  /* ... etc ... */

  // Envoi du mail 
  if (mail($cible, $objet, $contenuMail , $headers)) 
  { 
   echo '<p>'.$message_envoye.'</p>'."\n"; 
  } 
  else 
  { 
   echo '<p>'.$message_non_envoye.'</p>'."\n"; 
  }
0
myriam_marmotte Messages postés 24 Date d'inscription mardi 29 juillet 2014 Statut Membre Dernière intervention 10 septembre 2015
5 août 2014 à 16:06
Youhou ça marche !! (il m'en faut peu pour être heureuse ^^)
Une fois encore un grand merci pour le temps que tu m'as accordé !!

si je peux me permettre une dernière question, une fois mon formulaire envoyé, je voudrais que la page contact réapparaisse avec le message "Votre message nous est bien parvenu." Or là c'est une page blanche qui s'affiche avec ce message...

Je pourrais tenter, je pense, un "refresh", mais j'y perdrais en ergonomie. Il doit bien y avoir un moyen d'intégrer ça dans mon php non ?
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié par Pitet le 5/08/2014 à 16:46
Une solution rapide est de faire une redirection vers une page de remerciement :
  if (mail($cible, $objet, $comments, $headers)) 
  { 
   header('Location: page-remerciement.php');
   exit();
  } 
  else 
  { 
   echo '<p>'.$message_non_envoye.'</p>'."\n"; 
  }


Attention, il ne doit y avoir aucun affichage (echo, ligne vide, message d'erreur php...) avant l'appel à la fonction header pour que la redirection fonctionne (sauf si l'option output_buffering est activée). On ajoute aussi l'instruction exit() après la redirection pour arrêter le script ici et laisser le navigateur changer de page.

Si tu veux revenir sur la même page avec un message de remerciement, tu peux effectuer la redirection vers la page contact avec un paramètre pour indiquer que le mail est bien envoyé.
Donc à l'envoie du mail, on redirige avec un paramètre :
  if (mail($cible, $objet, $comments, $headers)) 
  { 
   header('Location: page-contact.php?send=true');
   exit();
  } 
  else 
  { 
   echo '<p>'.$message_non_envoye.'</p>'."\n"; 
  }


Dans le code html, au dessus du formulaire :
<?php
// si le paramètre existe
if (isset($_GET['send'])) {
    // on affiche un message de remerciement
    echo '<p>Merci pour votre message !</p>';
}
?>
<form id="contact" etc...
0
myriam_marmotte Messages postés 24 Date d'inscription mardi 29 juillet 2014 Statut Membre Dernière intervention 10 septembre 2015
6 août 2014 à 11:13
Bonjour ^^

Un énorme merci pour ton aide, tout fonctionne parfaitement !!
En plus (c'est le principal) j'ai compris d'où venaient mes erreurs, c'est sympa d'avoir pris le temps de m'expliquer.
0