Bonjour à tous.
J'ai quelques petits soucis pour protéger mon formulaire de contact (nom, email, sujet, message), et je ne vois pas d'où cela peut venir. Je signale aussi que mon site est sur un espace perso chez Free, je sais que l'on ne peut pas mettre toutes les fonctions. Merci d'avance de votre aide.
Voici mon code :
<?php
/* Récupération des valeurs des champs du formulaire */
if (get_magic_quotes_gpc())
{
$nom = stripslashes(trim($_POST['nom']));
$expediteur = stripslashes(trim($_POST['email']));
$sujet = stripslashes(trim($_POST['sujet']));
$message = stripslashes(trim($_POST['message']));
}
else
{
$nom = trim($_POST['nom']);
$expediteur = trim($_POST['email']);
$sujet = trim($_POST['sujet']);
$message = trim($_POST['message']);
}
/* Expression régulière permettant de vérifier si le
* format d'une adresse e-mail est correct */
$regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
/* Expression régulière permettant de vérifier qu'aucun
* en-tête n'est inséré dans nos champs */
$regex_head = '/[\n\r]/';
/* Si le formulaire n'est pas posté de notre site on renvoie
* vers la page d'accueil */
if($_SERVER['HTTP_REFERER'] != 'http://www.xxx.fr/futur/contact.php')
{
header('Location: http://www.xxx.fr/futur/');
}
/* On vérifie que tous les champs sont remplis */
elseif (empty($nom)
|| empty($expediteur)
|| empty($sujet)
|| empty($message))
{
echo "Tous les champs doivent être renseignés";
}
/* On vérifie que le format de l'e-mail est correct */
elseif (!preg_match($regex_mail, $expediteur))
{
echo "L'adresse email n'est pas valide";
}
/* On vérifie qu'il n'y a aucun header dans les champs */
elseif (preg_match($regex_head, $expediteur)
|| preg_match($regex_head, $nom)
|| preg_match($regex_head, $sujet))
{
echo "En-têtes interdites dans les champs du formulaire";
}
/* Destinataire (votre adresse e-mail) */
$to = 'xxx@xxx.com';
/* Construction du message */
$msg = 'Bonjour,'."\r\n\r\n";
$msg .= 'Ce mail a été envoyé depuis mon site perso par :'.$nom."\r\n\r\n";
$msg .= 'Voici le message :'.$sujet."\r\n";
$msg .= '***************************'."\r\n";
$msg .= $message."\r\n";
$msg .= '***************************'."\r\n";
/* En-têtes de l'e-mail */
$headers = 'From: '.$nom.' <'.$expediteur.'>'."\r\n\r\n";
/* Envoi de l'e-mail */
if (mail($to, $sujet, $msg, $headers))
{
echo "E-mail envoyé avec succès";
}
else
{
echo "Erreur d'envoi de l'e-mail";
}
?>