Page 1 sur 1

Ajout champ formulaire.

Posté : 01 déc. 2014, 21:23
par xclementx
Bonsoir a tous,

Mon problème est simple, j'ai un formulaire ci-dessous qui permet d'envoyer des mails directement sur ma boite. Il marche correctement, pas de soucis de ce coté la.

Mais j'aimerais ajouter d'autres champs et par la même occasion les recevoir par mail. J'ai essayé tant bien que mal de modifier ce code, en vain.

Si quelqu'un pouvait m'aider, ce serait génial. Merci à tous.
<?php
/*
	********************************************************************************************
	CONFIGURATION
	********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = '[email protected]';
 
// copie ? (envoie une copie au visiteur)
$copie = 'oui';
 
// Action du formulaire (si votre page a des paramètres dans l'URL)
// si cette page est index.php?page=contact alors mettez index.php?page=contact
// sinon, laissez vide
$form_action = '';
  
// 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.";
 
// Message d'erreur du formulaire
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
 
/*
	********************************************************************************************
	FIN DE LA CONFIGURATION
	********************************************************************************************
*/
 
/*
 * 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'])   : '';
$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
$style     = (isset($_POST['style']))     ? Rec($_POST['style'])     : '';
$ville     = (isset($_POST['ville']))     ? Rec($_POST['ville'])     : '';
 
// 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é
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
 
if (isset($_POST['envoi']))
{
	if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
	
	{
		// les 4 variables sont remplies, on génère puis envoie le mail
		$headers  = 'From:'.$nom.' <'.$email.'>' . "\r\n";
		//$headers .= 'Reply-To: '.$email. "\r\n" ; 
		//$headers .= 'X-Mailer:PHP/'.phpversion();
		$headers .= "Bcc: [email protected], [email protected]," . "\r\n";

		// 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
		if (mail($cible, $objet, $message, $headers))
		{
			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.'</p>';
		$err_formulaire = true;
	};
}; // fin du if (!isset($_POST['envoi']))
 
if (($err_formulaire) || (!isset($_POST['envoi'])))
{
	// afficher le formulaire
	echo '
	<form id="contact" method="post" action="'.$form_action.'">
	<fieldset><legend>Le Groupe</legend>
		<p><label for="nom">Nom du groupe :</label><input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" /></p>
		<p><label for="style">Style / Genre :</label><input type="text" id="style" name="style" value="'.stripslashes($style).'" tabindex="2" /></p>
		<p><label for="ville">Ville d&apos;origine :</label><input type="text" id="ville" name="ville" value="'.stripslashes($ville).'" tabindex="3" /></p>
		<p><label for="email">Email :</label><input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="4" /></p>
	</fieldset>
 
	<fieldset><legend>Votre message :</legend>
		<p><label for="objet">Objet :</label><input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" tabindex="5" /></p>
		<p><label for="message">Message :</label><textarea id="message" name="message" tabindex="6" cols="30" rows="8">'.stripslashes($message).'</textarea></p>
	</fieldset>
 
	<div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div>
	</form>';
};
?> 

Re: Ajout champ formulaire.

Posté : 02 déc. 2014, 16:43
par Spols
Je suppose que tu as essayé d'ajouter style et ville

voici un code qui devrait marcher
<?php
/*
        ********************************************************************************************
        CONFIGURATION
        ********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = '[email protected]';
 
// copie ? (envoie une copie au visiteur)
$copie = 'oui';
 
// Action du formulaire (si votre page a des paramètres dans l'URL)
// si cette page est index.php?page=contact alors mettez index.php?page=contact
// sinon, laissez vide
$form_action = '';
 
// 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.";
 
// Message d'erreur du formulaire
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
 
/*
        ********************************************************************************************
        FIN DE LA CONFIGURATION
        ********************************************************************************************
*/
 
/*
 * 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'])   : '';
$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
$style     = (isset($_POST['style']))     ? Rec($_POST['style'])     : '';
$ville     = (isset($_POST['ville']))     ? Rec($_POST['ville'])     : '';
 
// 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é
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
 
if (isset($_POST['envoi']))
{
        if (($nom != '') && ($email != '') && ($objet != '') && ($message != '') && ($style != '') && ($ville != ''))//Ne modifiez cette ligne que si tu veux que les champs style et ville soit obligatoire
       
        {
                // les 4 variables sont remplies, on génère puis envoie le mail
                $headers  = 'From:'.$nom.' <'.$email.'>' . "\r\n";
                //$headers .= 'Reply-To: '.$email. "\r\n" ;
                //$headers .= 'X-Mailer:PHP/'.phpversion();
                $headers .= "Bcc: [email protected], [email protected]," . "\r\n";

                // envoyer une copie au visiteur ?
                if ($copie == 'oui')
                {
                        $cible = $destinataire.','.$email;
                }
                else
                {
                        $cible = $destinataire;
                };
 
                //Ici on va assembler les champs ensemble avant de faire un post traitement
                $message = $message."\n style : ".$style."\n ville : ".$ville;
                // 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
                if (mail($cible, $objet, $message, $headers))
                {
                        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.'</p>';
                $err_formulaire = true;
        };
}; // fin du if (!isset($_POST['envoi']))
 
if (($err_formulaire) || (!isset($_POST['envoi'])))
{
        // afficher le formulaire
        echo '
        <form id="contact" method="post" action="'.$form_action.'">
        <fieldset><legend>Le Groupe</legend>
                <p><label for="nom">Nom du groupe :</label><input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" /></p>
                <p><label for="style">Style / Genre :</label><input type="text" id="style" name="style" value="'.stripslashes($style).'" tabindex="2" /></p>
                <p><label for="ville">Ville d&apos;origine :</label><input type="text" id="ville" name="ville" value="'.stripslashes($ville).'" tabindex="3" /></p>
                <p><label for="email">Email :</label><input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="4" /></p>
        </fieldset>
 
        <fieldset><legend>Votre message :</legend>
                <p><label for="objet">Objet :</label><input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" tabindex="5" /></p>
                <p><label for="message">Message :</label><textarea id="message" name="message" tabindex="6" cols="30" rows="8">'.stripslashes($message).'</textarea></p>
        </fieldset>
 
        <div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div>
        </form>';
};
?> 
J'ai modifié 2 endroit, regarde les commentaires qui accompagnent les modifications