Bonjour
Mon formulaire sans antispam fonctionne.
Les mails arrivent avec un avertissement des spam dans ma boite mail.
J'ai donc créé 3 fichiers mon formulaire (je vous mets uniquement le passage du formulaire de ma page), antispam et traitement.
J'ai une erreur à la dernière ligne de mon traitement alors que sans l'antispam tout fonctionne.
Je vous joins tout ça.
Quelqu'un pour m'aider?
J'ai oublié un signe? Je ne vois plus...
Mon formulaire en morceau (pas besoin il fonctionne) =
Mon fichier antispam =
Et pour finir mon code qui ne fonctionne plus =
Mon formulaire sans antispam fonctionne.
Les mails arrivent avec un avertissement des spam dans ma boite mail.
J'ai donc créé 3 fichiers mon formulaire (je vous mets uniquement le passage du formulaire de ma page), antispam et traitement.
J'ai une erreur à la dernière ligne de mon traitement alors que sans l'antispam tout fonctionne.
Je vous joins tout ça.
Quelqu'un pour m'aider?
J'ai oublié un signe? Je ne vois plus...
Mon formulaire en morceau (pas besoin il fonctionne) =
PHP:
<?php
// on inclue le fichier des questions/réponses
require_once('antispam.php');
// on tire au sort une question
$nospam = NoSpamQuestion('ask', 0);
....
[CODE=html]<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="author" content="">
<meta name="robots" content="noarchive, nosnippet, noodp, noindex, nofollow" />
<meta name="googlebot" content="noarchive, nosnippet, noodp, noindex, nofollow" />
<title>Formulaire de contact</title>
</head>
<div class="contact">
<form method="post" action="send-mail.php" class="contact-form" id="form">
<div class="col-md-12">
<input type="text" name="name" placeholder="Insérez votre nom" class="required">
</div>
<div class="col-md-12">
<input type="email" name="email" placeholder="Insérez votre adresse email" class="contact-form-email required">
</div>
<div class="col-md-12">
<input type="text" name="subject" placeholder="Votre sujet" class="contact-form-subject required">
</div>
</div>
<textarea name="message" placeholder="Insérez votre message" class="required" rows="7"></textarea>
<div class="response-message"></div>
<fieldset><legend>Antispam</legend>
<p>
<label for="code">Ecrivez en LETTRES le résultat : <?php echo $nospam['question']; ?></label><input type="text" name="code" id="code" />
<input type="hidden" name="nospam_question" value="<?php echo $nospam['num']; ?>" />
</p>
</div>
<button class="border-button border-bt-red" type="submit" id="submit" name="submit">Envoyer Message</button>
</form>
PHP:
<?php
function NoSpamQuestion($mode, $answer)
{
$array_pictures = array(); $j = 0;
$array_pictures[$j]['num'] = $j;
$array_pictures[$j]['question'] = "La multiplication de 4 par 4 donne ...";
$array_pictures[$j]['answer'] = "seize";
$j++;
$array_pictures[$j]['num'] = $j;
$array_pictures[$j]['question'] = "La multiplication de 2 par 2 donne ...";
$array_pictures[$j]['answer'] = "quatre";
$j++;
if ($mode != 'ans') // mode : 'ask'
{
// on est en mode 'tirer au sort', on tire une image aléatoire
$lambda = rand(0, count($array_pictures)-1);
return $array_pictures[$lambda];
}
else
{
// on demande une vraie réponse
foreach($array_pictures as $i => $array)
{
if ($i == $answer)
{
return $array;
break;
};
};
}; // Fin if ($mode != 'ans')
}
?>
PHP:
<?php
// on ne traite le formulaire que si le bouton submit a été cliqué
if (isset($_POST['submit']))
{
require_once('antispam.php'); // pour définir les images, les questions et les réponses
$name = stripcslashes($_POST['name']);
$email = stripcslashes($_POST['email']);
$subject = stripcslashes($_POST['subject']);
$message = stripcslashes($_POST['message']);
$mailto = '[email protected]';
$subject = $subject;
$error_message = 'Une erreur est survenue';
$success_message = 'message envoyé';
$message = "Nom: $name\r\n
Objet: $subject\r\n
Email: $email\r\nMessage: $message";
$headers = "From: $name <$email>" . "\r\n" . "Reply-To: $email" . "\r\n" . "X-Mailer: PHP/" . phpversion();
function validateEmail($email) {
if(preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $email))
return true;
else
return false;
}
// n'oublions pas les 2 variables du captcha :
$code = (isset($_POST['code'])) ? strtolower($_POST['code']) : ''; // contient la réponse du visiteur
$nospam_question = (isset($_POST['nospam_question'])) ? $_POST['nospam_question'] : ''; // contient un nombre : le numéro de la vraie réponse
// On demande la vraie réponse
$verif_nospam = NoSpamQuestion('ans', $nospam_question);
// on compare la 'vraie' réponse et celle du visiteur
if ($code != strtolower($verif_nospam['answer']))
{
if((strlen($name) < 1 ) || (strlen($email) < 1 ) || (strlen($message) < 1 ) || validateEmail($email) == FALSE ) {
echo($error_message);
} else {
if( mail($mailto, $subject, $message, $headers) ) {
echo '
<script language="Javascript">
<!--
document.location.replace("merci.php");
// -->
</script>';
} else {
echo($error_message);
};
};
?>