besoin d'aide pour formulaire de contact antispam

paovallau

New Member
#1
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) =
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>
Mon fichier antispam =

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')
    }
?>
Et pour finir mon code qui ne fonctionne plus =

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 = 'moi@gmail.com';
$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);

};
    };
?>
 

PH-Marc-André.B.

Modérateur
Membre du personnel
#2
Bonjour,

Quelle est l'erreur que vous aviez reçu? Il nous faut tous les détails sur cette dernière s'il vous plaît.
 
Haut