envoi par mail des données d'un formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : envoi par mail des données d'un formulaire

Re: envoi par mail des données d'un formulaire

par moogli » 09 janv. 2017, 14:36

en tous cas il doit y avoir une erreur php avec le header après l'affichage des messages.

le nl2br doit aussi ajouter des <br/> dans le texte du mail envoyé en texte et non en html ;)

@+

Re: envoi par mail des données d'un formulaire

par Spols » 08 janv. 2017, 17:38

C'est à dire ??

as tu un message d'erreur ? si oui le(s)quel(s)
recois tu le mail ? si oui montre nous le contenu, voir le code source.

envoi par mail des données d'un formulaire

par 5bis » 07 janv. 2017, 19:38

Bonsoir,

Je n'y connais pas grand chose en php et j'ai souhaité effectuer l'envoi des données d'un formulaire de site web sur mon adresse mail. Malheureusement, tout ne fonctionne pas comme prévu ! :cry:

Voici mon formulaire :
<form method="post" action="cib.php" enctype="multipart/form-data" onSubmit="return valider()" name="formu">
   	<p>
       <label for="nom">Votre nom :</label><br />
       <input type="text" name="nom" id="nom" tabindex="10" size="30" maxlength="30" />
	</p>
	<p>
	   <label for="adresse">Votre e-mail :</label><br />
       <input type="text" name="email" id="email" tabindex="20" size="30" maxlength="35" />
   	</p>
	<p>
       <label for="message">Votre message :</label><br />
	   <textarea name="message" id="message" rows="10" cols="50" tabindex="30"></textarea>
	</p>
	<p>
       <input type="submit" name="envoi" value="ENVOYER" /> <input type="reset" value="RECOMMENCER" />
   	</p><br />
</form>
et voici le code de ma page cib.php :
<?php
    /*
    	********************************************************************************************
    	CONFIGURATION
    	********************************************************************************************
    */
    // destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
    $destinataire = 'monadresse';
	     
    // copie ? (envoie une copie au visiteur)
    $copie = 'non'; // 'oui' ou 'non'
     
    // Messages de confirmation du mail
    $message_envoye = "Parfait !";
    $message_non_envoye = "L'envoi du mail a &eacute;chou&eacute;, veuillez r&eacute;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&eacute;rifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
     
    /*
    	********************************************************************************************
    	FIN DE LA CONFIGURATION
    	********************************************************************************************
    */
     
    // 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'])     : '';
    	$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
    	$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
     
    	// 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 != '') && ($message != ''))
    	{
    		// les 3 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" .
    				'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
    				'Content-Disposition: inline'. "\r\n" .
    				'Content-Transfer-Encoding: 7bit'." \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
    		$message = str_replace("'","'",$message);
    		$message = str_replace("&#8217;","'",$message);
    		$message = str_replace(""",'"',$message);
    		$message = str_replace('<br>','',$message);
    		$message = str_replace('<br />','',$message);
    		$message = str_replace("<","<",$message);
    		$message = str_replace(">",">",$message);
    		$message = str_replace("&","&",$message);
     
    		// Envoi du mail
    		$num_emails = 0;
    		$tmp = explode(';', $cible);
    		foreach($tmp as $destinataire)
    		{
    			if (mail($destinataire, $message, $headers))
    				$num_emails++;
    		}
     
    		if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1)))
    		{
				echo '<p>'.$message_envoye.'</p>';
			}
    		else
    		{
    			echo '<p>'.$message_non_envoye.'</p>';
    		};
    	}
    	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']))
		
	header('Location: pagederemerciement.html');
		
    ?>