Bonjour,
j'ai fait un formulaire de mail. ma validation php est la suivante :
$_VALIDATED'nom'] = (preg_match('/^[a-zA-Z\-\]{2,30}$/', $_POST'nom']))?$_POST'nom']:false;
$_VALIDATED'prenom'] = (preg_match('/^[a-zA-Z\-\]{2,30}$/', $_POST'prenom']))?$_POST'prenom']:false;
$_VALIDATED'mail'] = filter_input(INPUT_POST, 'mail', FILTER_VALIDATE_EMAIL);
$duplicate = $_POST'duplicate'];
$unsafeInput = $_POST'contenu'];
$_VALIDATED'contenu'] = preg_replace('/<(\/?)(frame|iframe|script)(.*)>/Uim', '<\1\2\3>', $unsafeInput);
$_VALIDATED'contenu'] = preg_replace('/\"/Uim', '"', $_VALIDATED'contenu']);
/**
* builds error list
**/
$err = false;
$errors = "";
foreach ($_VALIDATED as $key => $value) {
if (!$value){
$err = true;
$errors .="<li>erreur dans le champ $key</li>";
}
}
if (!$err){
/**
* Sets headers
**/
$to = 'contact@crozet-magenta.fr';
$to .= ($duplicate)?','.$_VALIDATED'mail']:"";
$subject = "{$_VALIDATED'prenom']} {$_VALIDATED'nom']} vous envoie un message";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
$headers .= 'From:'. $_VALIDATED'mail'] . "\r\n";
$headers .= 'bcc:'. $to . "\r\n";
/**
* builds HTML message
**/
$message = '
<html>
<head>
<title>'.$subject.'</title>
</head>
<body>'
.stripslashes($_VALIDATED'contenu']).
'</body>
</html>
';
/**
* Tries to send mail and displays result
**/
if (mail($to, $subject, $message, $headers)){
echo "<fieldset class='success'><legend class='title'>Resultat de l'envoi</legend>
Le mail a été correctement envoyé.
</fieldset>
";
} else {
echo "<fieldset class='error'><legend class='title'>Resultat de l'envoi</legend>
Le mail n'a pas pu être envoyé suite à une erreur interne, veuillez réessayer plus tard.
</fieldset>
";
}
} else {
/**
* stores errors in session and redirects to the contact form
**/
$_SESSION'errors'] = "Le mail n'a pas été envoyé, il y a les erreurs suivantes dans le formulaire :<br><ul>$errors</ul>";
echo '<META HTTP-EQUIV="Refresh" CONTENT="0; URL='.$_ROOT.'Contact">';
exit();
}
est-ce que la protection est efficace ou est-ce que j'ai raté des étapes ?