Bonsouair !
Je viens enfin de passer le cap du formulaire de contact sur mon blog \o/ Le code html est valide, et le traitement php fonctionne.
Néanmoins, j'ai deux questions :
- Pourquoi est-ce que je récupère le contenu du message dans le champ Objet de ma webmail? Comment éviter cela?
- Que pensez-vous de ce formulaire et de ces codes (voir ci-dessous)? Votre avis sur le script php m'intéresse au plus au point car je n'y connais rien.
Code : Tout sélectionner
<form id="c-form" method="post" enctype="application/x-www-form-urlencoded" action="/scripts/contact.scr.php">
\t<p>
\t\t<label for="name"><b class="c-label">Votre nom :</b>
\t\t\t<input class="c-input f-item" id="name" name="name" type="text" autocomplete="on" maxlength="99" required />
\t\t</label>
\t</p>
\t<p>
\t\t<label for="email"><b class="c-label">Votre adresse email :</b>
\t\t\t<input class="c-input f-item" id="email" name="email" type="email" autocomplete="on" maxlength="99" required />
\t\t</label>
\t</p>
\t<p>
\t\t<label for="message"><b class="c-label">Votre message :</b>
\t\t\t<textarea class="c-input f-item" id="message" name="message" maxlength="999" required></textarea>
\t\t</label>
\t</p>
\t<p>
\t\t<button class="c-input f-item" id="send" name="send" type="submit">Envoyez !</button>
\t</p>
</form>
Code : Tout sélectionner
<?php
/*
\tAuthor: <http://www.php-astux.info/script-formulaire-contact.php>
\tLast mod: 2013-01-03
*/
/*
\t*************************
\tCONFIGURATION
\t*************************
*/
// destinataire
$destinataire = 'contact@***.eu';
// envoie d'une copie au visiteur
$copie = 'non'; // 'oui' ou 'non'
// Messages de confirmation du mail
$message_envoye = "<b>Votre message a été envoyé. Vous pouvez <a href=\"/\">retourner à la page d'accueil</a>.</b>";
$message_non_envoye = "<b>Désolé, l'envoi a échoué. Merci d'avance de <a href=\"/contact\">réessayer</a>.</b>";
// Messages d'erreur du formulaire
$message_erreur_formulaire = "<b>Vous devez d'abord <a href=\"/contact\">envoyer le formulaire</a>.</b>";
$message_formulaire_invalide = "<b>Vérifiez que tous les champs sont bien remplis et que l'email est sans erreur.";
/*
\t****************************
\tFIN DE LA CONFIGURATION
\t****************************
*/
// on teste si le formulaire a été soumis
if (!isset($_POST['send']))
{
\t// formulaire non envoyé
\techo '<p>'.$message_erreur_formulaire.'</p>'."
";
}
else
{
\t/*
\t * cette fonction sert à nettoyer et enregistrer un texte
\t */
\tfunction Rec($text)
\t{
\t\t$text = htmlspecialchars(trim($text), ENT_QUOTES);
\t\tif (1 === get_magic_quotes_gpc())
\t\t{
\t\t\t$text = stripslashes($text);
\t\t}
\t\t$text = nl2br($text);
\t\treturn $text;
\t};
\t/*
\t * Cette fonction sert à vérifier la syntaxe d'un email
\t */
\tfunction IsEmail($email)
\t{
\t\t$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);
\t\treturn (($value === 0) || ($value === false)) ? false : true;
\t}
\t// formulaire envoyé, on récupère tous les champs.
\t$name = (isset($_POST['name'])) ? Rec($_POST['name']) : '';
\t$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
\t$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
\t// On va vérifier les variables et l'email ...
\t$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
\tif (($name != '') && ($email != '') && ($message != ''))
\t{
\t\t// les 4 variables sont remplies, on génère puis envoie le mail
\t\t$headers = 'MIME-Version: 1.0' . "\r
";
\t\t$headers .= 'From:'.$name.' <'.$email.'>' . "\r
" .
\t\t\t\t\t'Reply-To:'.$email. "\r
" .
\t\t\t\t\t'X-Mailer:PHP/'.phpversion() . "\r
" .
\t\t\t\t\t'Message:'.$message;
\t\t// envoyer une copie au visiteur ?
\t\tif ($copie == 'oui')
\t\t{
\t\t\t$cible = $destinataire.','.$email;
\t\t}
\t\telse
\t\t{
\t\t\t$cible = $destinataire;
\t\t};
\t\t// Remplacement de certains caractères spéciaux
\t\t$message = str_replace("'","'",$message);
\t\t$message = str_replace("’","'",$message);
\t\t$message = str_replace(""",'"',$message);
\t\t$message = str_replace('<br>','',$message);
\t\t$message = str_replace('<br />','',$message);
\t\t$message = str_replace("<","<",$message);
\t\t$message = str_replace(">",">",$message);
\t\t$message = str_replace("&","&",$message);
\t\t// Envoi du mail
\t\tif (mail($cible, $message, $headers))
\t\t{
\t\t\techo '<p>'.$message_envoye.'</p>'."
";
\t\t}
\t\telse
\t\t{
\t\t\techo '<p>'.$message_non_envoye.'</p>'."
";
\t\t};
\t}
\telse
\t{
\t\t// une des 3 variables (ou plus) est vide ...
\t\techo '<p>'.$message_formulaire_invalide.' <a href="/contact">Retour au formulaire</a></p>'."
";
\t};
}; // fin du if (!isset($_POST['send']))
?>