Formulaire contact: $headers marche pas

Résolu
Emy65 -  
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
J'ai créé récemment mon site internet: http://www.e-roucolle.fr
Mon problème est lié à la fonction mail de la page contact.
Je reçois le mail avec le sujet, le message complet, par contre, je reçois seulement le nom, le prénom ne s'affiche pas.

Code HTML:
<form id="contact" method="post" action="formmail.php">
   <fieldset id="Coordonnées">
	<legend> &nbsp;Contact&nbsp; </legend>
	<div id="info">
	<label>Nom : </label><br/><br/>
	<label>Prénom : </label><br/><br/>
	<label>Sujet : </label>
	</div>
	<div id="case">
	   <input type="text" id="nom" name="nom" size="30" /><br /><br />                
	   <input type="text" id="prenom" name="prenom" size="30" /><br /><br />
	   <input type="text" id="objet" name="objet" size="30" />
	</div><br /><br /><br /><br /><br /><br />
	<p id="message">Message</p>
	<div id="message2"><textarea id="message" name="message" rows="10" cols="70"></textarea></div>
	<p id="envoyer">
	   <input type="submit" name="envoi" value="Envoyer" />
        </p>
   </fieldset>                
</form>



Code PHP:
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
	$destinataire = 'emy@gmail.com';

	// Messages de confirmation du mail
	$message_envoye = "Votre message a bien été envoyé !";
	$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.";
	$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis.";

	// 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 = trim($text); // delete white spaces after & before text
	   if (1 === get_magic_quotes_gpc())
	   {
	   	$stripslashes = create_function('$txt', 'return stripslashes($txt);');
	   }
	   else
	   {
		$stripslashes = create_function('$txt', 'return $txt;');
	   }

	   // magic quotes ?
	   $text = $stripslashes($text);
	   $text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
	   $text = nl2br($text);
	   return $text;
	   };

	   // formulaire envoyé, on récupère tous les champs.
	   $nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
	   $prenom   = (isset($_POST['prenom']))   ? Rec($_POST['prenom'])   : '';
	   $objet   = (isset($_POST['objet']))    ? Rec($_POST['objet'])    :  '';
	   $message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
		
	if (($nom != '') && ($prenom != '') && ($objet != '') && ($message != ''))
	   {
	   // les 4 variables sont remplies, on génère puis envoie le mail
	   $headers = 'From: '.$nom.' '.$prenom.'' . "\r\n";

	   // Remplacement de certains caractères spéciaux
	   $message = str_replace("&#039;","'",$message);
	   $message = str_replace("&#8217;","'",$message);
	   $message = str_replace("&quot;",'"',$message);
	   $message = str_replace('<br>','',$message);
	   $message = str_replace('<br />','',$message);
	   $message = str_replace("<","<",$message);
	   $message = str_replace(">",">",$message);
	   $message = str_replace("&amp;","&",$message);

	   // Envoi du mail
           if (mail($destinataire, $objet, $message, $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']))


Merci de votre aide
A voir également:

3 réponses

jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
Bonjour..

Pourquoi dans :
$headers = 'From: '.$nom.' '.$prenom.'' . "\r\n";


le '\r\n" ??? pas besoin de revenir à la ligne pour le from ??

Sinon, apres la ligne, vérifie que le prénom apparait bien :

echo '<script>alert("'.$headers.'");</script>';
0
Emy65
 
Merci pour ta réponse.
J'ai enlevé le '\r\n" et quand je fais le echo, il écrit bien le nom et le prénom, séparé par un espace.
Donc j'ai essayé en rajoutant un point entre le nom et le prénom:
 $headers = 'From: '.$nom.'. '.$prenom.'';
et ça marche, je reçoit bien l'e-mail avec le nom et le prénom, ils sont séparés par un point.

Merci de ton aide !
0
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
essaie :
$headers = 'From: '.$nom.'&nbsp'.$prenom. "\r\n";    
&nbsp  met un espace insécable....  
0