Copie expéditeur dans formulaire contact php

Résolu/Fermé
la chicane Messages postés 156 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 22 mai 2016 - 28 févr. 2010 à 12:36
la chicane Messages postés 156 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 22 mai 2016 - 1 mars 2010 à 12:23
Bonjour la compagnie,

J'ai créé un formulaire htm et le code php qui va avec.
Tout marche super... sauf la copie à l'expéditeur qui ne fonctionne pas alors qu'il me semble avoir écrit les choses correctement... je ne comprends pas ce qui manque.

Je soumets donc le code à votre haute expérience...

voici mon formulaire htm :
<form action="traitement_formulaire.php" method="post" name="contact" id="contact">
			<p align="center" class="Style15" style="margin-top:5px;">Merci de 
			  remplir <strong>tous les champs</strong> du formulaire et de le renvoyer
			  pour le <span class="Style16">31
    mai</span></span>.<br />
    <br />
    En fonction du nombre de participants,
    je vous recontacterai par mail courant juin<br />
    pour vous préciser la
      nature de votre participation (entrée
    ou dessert + grillades). </p>
			<table width="85%" align="center" cellpadding="5" cellspacing="4">
		  <tr>
				<td width="289"><span class="Style23">Famille (nom pr&eacute;nom) </span></td>
				<td width="317">				  
			      <div align="left">
			        <input name="nom" type="text" id="nom" style="background-color:#CCCCCC" tabindex="1" size="40" maxlength="40"/>
            </div></td>
			  </tr>
				<tr>
				<td><span class="Style23">Nombre d'adultes </span></td>
				<td>				  
			      <div align="left">
			        <input name="adultes" type="text" id="adultes" style="background-color:#CCCCCC" tabindex="2" size="40"/>
		          </div></td>
				</tr>
				<tr>
				<td><span class="Style23">Nombre d'enfants </span></td>
				<td>				  
			      <div align="left">
			        <input name="enfants" type="text" id="enfants" style="background-color:#CCCCCC" tabindex="3" size="40"/>
		          </div></td>
				</tr>
				<tr>
                  <td><span class="Style23">Arriv&eacute;e le samedi soir <br />
                  (</span><span class="Style24">pr&eacute;cisez
                    si vous arrivez pour diner</span><span class="Style23">)</span></td>
				  <td><div align="left">
                      <input name="arrivee" type="text" id="arrivee" style="background-color:#CCCCCC" tabindex="4" size="40"/>
                  </div></td>
			  </tr>
				<tr>
				<td><span class="Style23">Adresse mail </span></td>
				<td>				  
			      <div align="left">
			        <input name="email" type="text" id="email" style="background-color:#CCCCCC" tabindex="4" size="40"/>
		          </div></td>
				</tr>
			
				<tr>
				<td valign="top"><span class="Style23">Message</span></td>
				<td>
				  <div align="left">
				    <textarea name="message" cols="50" rows="9" id="message" style="background-color:#CCCCCC" tabindex="6"></textarea>
			      </div></td>
				</tr>
				<tr>
				<td>&nbsp;</td>
				<td><input type="submit" name="envoi" value="Envoyer" /></td></tr>
	</table>
  </form>


et mon code php à côté :

<?php
	
	// destinataire du mail
	$destinataire = 'nom.prenom@operateur.fr';


	// copie à l'émetteur
	$copie = 'oui'; // 'oui' ou 'non'

	// Messages de confirmation du mail
	$message_envoye = 'ar_message.htm';
	$message_non_envoye = 'nok_message.htm';
	$message_erreur_formulaire = "Attention, pour continuer, vous devez <a href=\"contact.html\">envoyer le formulaire</a>.";
	$message_formulaire_invalide = 'nok_champs_form.htm';


	// test d'envoi du formulaire
	if (!isset($_POST['envoi']))
	{
	// si echec
		echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
	}
	else
	{
	/*
	* nettoyer et enregistrer le message
	*/
		function Rec($text)
		{
			$text = trim($text); // supprime les espaces blancs en début et en fin de texte
			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;
		};

		/*
		 * vérif email
		 */
		function IsEmail($email)
		{
			$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
			return (eregi($pattern,$email)) ? true : false;
		};

		// formulaire envoyé, on récupère tous les champs.
		$nom		= (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
		$adultes     = (isset($_POST['adultes']))     ? Rec($_POST['adultes'])     : '';
		$enfants  = (isset($_POST['enfants']))     ? Rec($_POST['enfants'])     : '';
		$arrivee  	= (isset($_POST['arrivee']))   ? Rec($_POST['arrivee'])   : '';
		$email   	= (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
		$objet   	= (isset($_POST['objet']))   ? Rec($_POST['objet'])   : 'Reponse invitation 50 ans';
		$message 	= (isset($_POST['message'])) ? Rec($_POST['message']) : '';

		// vérification des variables et de l'email ...
		$email = (IsEmail($email)) ? $email : ''; 

		if (($nom != '') && ($adultes != '') && ($enfants != '') && ($arrivee != '') && ($email != '')&& ($message != ''))
		{
			
		// envoi du mail après constitution

		$headers = "Content-Type: text/html; charset=\"iso-8859-1\"\n".'From: '.$nom.' <'.$email.'>';
		$message = str_replace('\r\n','<br>',$message);
		$objet = str_replace("&#039;","'",$objet);


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

		//constitution du corps du mail

		$message = 'Nom : '.$nom."<br>".'Adultes : '.$adultes."<br>".'Enfants : '.$enfants."<br>".'Arrivee : '.$arrivee."<br>".'email : '.$email."<br>".'Message : '.$message;

		// Envoi du mail

		if (mail($cible, $objet, $message, $headers))
			{
		header('Location: ar_message.htm');
			}
		else
			{
			header('Location: nok_message.htm');
			};
		}
		else
		{
		// une des 3 variables (ou plus) est vide ...
			header ('Location: nok_champs_form.htm');
		};
	};
		// fin du if (!isset($_POST['envoi']))

?>

Merci de votre aide.
A voir également:

5 réponses

Nico_ Messages postés 1219 Date d'inscription vendredi 29 décembre 2006 Statut Membre Dernière intervention 15 mars 2016 189
28 févr. 2010 à 14:56
bonjour,

il te manque le champs "copie" celui qui a la valeur "oui ou non" -> formulaire
il te manque le traitement de $copie -> partie php

J'ai fais des changements, fais un test et dis nous le résultat

bonne journée

formulaire:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans nom</title>
</head>

<body>


<form action="traitement_formulaire.php" method="post" name="contact" id="contact">
			<p align="center" class="Style15" style="margin-top:5px;">Merci de 
			  remplir <strong>tous les champs</strong> du formulaire et de le renvoyer
			  pour le <span class="Style16">31
    mai</span></span>.<br />
    <br />
    En fonction du nombre de participants,
    je vous recontacterai par mail courant juin<br />
    pour vous préciser la
      nature de votre participation (entrée
    ou dessert + grillades). </p>
			<table width="85%" align="center" cellpadding="5" cellspacing="4">
		  <tr>
				<td width="289"><span class="Style23">Famille (nom pr&eacute;nom) </span></td>
				<td width="317">				  
			      <div align="left">
			        <input name="nom" type="text" id="nom" style="background-color:#CCCCCC" tabindex="1" size="40" maxlength="40"/>
            </div></td>
			  </tr>
				<tr>
				<td><span class="Style23">Nombre d'adultes </span></td>
				<td>				  
			      <div align="left">
			        <input name="adultes" type="text" id="adultes" style="background-color:#CCCCCC" tabindex="2" size="40"/>
		          </div></td>
				</tr>
				<tr>
				<td><span class="Style23">Nombre d'enfants </span></td>
				<td>				  
			      <div align="left">
			        <input name="enfants" type="text" id="enfants" style="background-color:#CCCCCC" tabindex="3" size="40"/>
		          </div></td>
				</tr>
				<tr>
                  <td><span class="Style23">Arriv&eacute;e le samedi soir <br />
                  (</span><span class="Style24">pr&eacute;cisez
                    si vous arrivez pour diner</span><span class="Style23">)</span></td>
				  <td><div align="left">
                      <input name="arrivee" type="text" id="arrivee" style="background-color:#CCCCCC" tabindex="4" size="40"/>
                  </div></td>
			  </tr>
				<tr>
				<td><span class="Style23">Adresse mail </span></td>
				<td>				  
			      <div align="left">
			        <input name="email" type="text" id="email" style="background-color:#CCCCCC" tabindex="4" size="40"/>
		          </div></td>
				</tr>
                
                  <td><span class="Style23">Recevoir une copie de cet e-mail ?</span></td>
				    <td>				  
			      <div align="left">
			        <table width="200">
			          <tr>
			            <td><label>
			              <input name="copie" type="radio" id="copie_0" value="oui" checked="checked" />
			              Oui</label></td>
		              </tr>
			          <tr>
			            <td><label>
			              <input type="radio" name="copie" value="non" id="copie_1" />
			              Non</label></td>
		              </tr>
		            </table>
			        </div></td>
				</tr>
			
				<tr>
				<td valign="top"><span class="Style23">Message</span></td>
				<td>
				  <div align="left">
				    <textarea name="message" cols="50" rows="9" id="message" style="background-color:#CCCCCC" tabindex="6"></textarea>
			      </div></td>
				</tr>
				<tr>
				<td>&nbsp;</td>
				<td><input type="submit" name="envoi" value="Envoyer" /></td></tr>
	</table>
  </form>

</body>
</html>


traitement (fichier / partie .php)
<?php
	
	// destinataire du mail
	$destinataire = 'nom.prenom@operateur.fr';


	// copie à l'émetteur
	$copie = 'oui'; // 'oui' ou 'non'

	// Messages de confirmation du mail
	$message_envoye = 'ar_message.htm';
	$message_non_envoye = 'nok_message.htm';
	$message_erreur_formulaire = "Attention, pour continuer, vous devez <a href=\"contact.html\">envoyer le formulaire</a>.";
	$message_formulaire_invalide = 'nok_champs_form.htm';


	// test d'envoi du formulaire
	if (!isset($_POST['envoi']))
	{
	// si echec
		echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
	}
	else
	{
	/*
	* nettoyer et enregistrer le message
	*/
		function Rec($text)
		{
			$text = trim($text); // supprime les espaces blancs en début et en fin de texte
			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;
		};

		/*
		 * vérif email
		 */
		function IsEmail($email)
		{
			$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
			return (eregi($pattern,$email)) ? true : false;
		};

		// formulaire envoyé, on récupère tous les champs.
		$nom		= (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
		$adultes     = (isset($_POST['adultes']))     ? Rec($_POST['adultes'])     : '';
		$enfants  = (isset($_POST['enfants']))     ? Rec($_POST['enfants'])     : '';
		$arrivee  	= (isset($_POST['arrivee']))   ? Rec($_POST['arrivee'])   : '';
		$email   	= (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
		$objet   	= (isset($_POST['objet']))   ? Rec($_POST['objet'])   : 'Reponse invitation 50 ans';
		$message 	= (isset($_POST['message'])) ? Rec($_POST['message']) : '';
		$copie 	= (isset($_POST['copie'])) ? Rec($_POST['copie']) : '';

		// vérification des variables et de l'email ...
		$email = (IsEmail($email)) ? $email : ''; 

		if (($nom != '') && ($adultes != '') && ($enfants != '') && ($arrivee != '') && ($email != '')&& ($message != ''))
		{
			
		// envoi du mail après constitution

		$headers = "Content-Type: text/html; charset=\"iso-8859-1\"\n".'From: '.$nom.' <'.$email.'>';
		$message = str_replace('\r\n','<br>',$message);
		$objet = str_replace("&#039;","'",$objet);


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

		//constitution du corps du mail

		$message = 'Nom : '.$nom."<br>".'Adultes : '.$adultes."<br>".'Enfants : '.$enfants."<br>".'Arrivee : '.$arrivee."<br>".'email : '.$email."<br>".'Message : '.$message;

		// Envoi du mail

		if (mail($cible, $objet, $message, $headers))
			{
		header('Location: ar_message.htm');
			}
		else
			{
			header('Location: nok_message.htm');
			};
		}
		else
		{
		// une des 3 variables (ou plus) est vide ...
			header ('Location: nok_champs_form.htm');
		};
	};
		// fin du if (!isset($_POST['envoi']))

?>



0
avion-f16 Messages postés 19244 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 17 avril 2024 4 496
28 févr. 2010 à 15:01
Il faut utiliser la copie carbone (Cc) dans les headers.
$headers = 'Content-Type: text/html; charset="iso-8859-1"'."\n";
$headers .= 'From: '.$nom.' <'.$email.'>'."\n";
$headers .= 'Cc: email@expediteur.com'."\n";
0
la chicane Messages postés 156 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 22 mai 2016 37
28 févr. 2010 à 21:45
@ Nico : merci Nico pour cette correction de code, mais malheureusement, cela ne change rien...

@ avion-f16 : j'ai donc essayé ta solution aussi, mais cela ne change rien non plus...


Conclusion : je viens de passer 3 bonnes heures à retourner le pb dans tous les sens... "mais où donc que c'est que ça pêche" ????

Dernière question : n'y a-t-il pas un moyen simple d'envoyer automatiquement une copie de son mail à l'expéditeur, sans lui demander son avis ?

merci d'avance...
0
la chicane Messages postés 156 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 22 mai 2016 37
28 févr. 2010 à 21:58
Me revoilà...
j'ai poursuivis mes tests et j'ai remarqué une chose :
si je me mets à la place de l'expéditeur, celui qui rempli le formulaire : je reçois bien une copie du mail envoyé via le formulaire de contact si mon adresse est en "orange.fr", mais pas lorsque je saisis une adresse mail d'expéditeur en "laposte.net"

bizarre non ??

une idée ??

ps : j'en déduis que vos corrections étaient bonnes messieurs !!!!
mais comment puis-je faire pour qu'aucun "domaine" (type "laposte.net") ne soit exclus... ???
0

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

Posez votre question
Nico_ Messages postés 1219 Date d'inscription vendredi 29 décembre 2006 Statut Membre Dernière intervention 15 mars 2016 189
1 mars 2010 à 12:19
Bonjour,
il est possible que votre hébergeur soit blacklisté chez certain fournisseur mail.

Bonne journée
0
la chicane Messages postés 156 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 22 mai 2016 37
1 mars 2010 à 12:23
c'est vrai... je n'avais pas pensé à cela. J'étais bien allée voir dans les indésirables, si le message n'y était pas parti, mais non...

tant pis, ce n'est pas si grave, je laisse le code comme ça pour ce qui est de la copie.

Merci à vous deux pour votre aide.
0