begin process at 2012 05 31 19:09:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

valider un captcha


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

valider un captcha

lundi 10 décembre 2007 à 08:37:35 | valider un captcha

philclimb

Bonjour;

J'ai réaliser un formulaire de mail que je veux placer dans la page "contact" de mon site.
Pour éviter les vilains spams j'ai placé un captcha, mon soucis : je n'arrive pas à placer la validation de la captcha dans le formulaire pour bloquer l'envoi du mail si le résultat  est faux ou si elle n'est pas remplie.

Je joins les deux fichiers. Merci d'avance de votre aide.

Philclimb

FICHIER CAPTCHA:

<?php
function aff_captcha()
{
    // Tableau de valeurs
    $input = array(2, 35, 15, 6, 40, 4, 8, 22, 11, 5, 32, 10, 1, 12, 26);
    // Extraction aléatoire de deux valeurs du tableau
    $rand_keys = array_rand($input, 2);
    // Creation et calcul de la somme des deux valeurs
    $question = 'Quelle est la somme de <strong>'.$input[$rand_keys[0]].' + '.$input[$rand_keys[1]].' = </strong>';
    $add = md5($input[$rand_keys[0]] + $input[$rand_keys[1]]);

    echo '<table cellspacing="0" cellpadding="6" style="border: 1px solid red">
    <tr>
        <td><strong>Anti-Spam : </strong>'. $question .'</td>
        <td><input name="reponse" type="text" size="3" maxlength="3" value="" style="font-weight: bold" />
        <input name="captcha" type="hidden" value="'. $add .'" /></td>
    </tr>
    </table>';
}

function valid_captcha()
{
    if (md5($_POST['reponse']) == $_POST['captcha'])
        return true;
    else
        return false;
}
?>

FICHIER CONTACT CONTENANT LE FORMULAIRE DE MAIL:

<?php
require ("Captcha.php");
?>
<?php
// Dans la ligne qui suit, remplacer webmaster@domaine.tld par l'adresse email du webmaster, à laquelle les messages devront être envoyés
$email_webmaster = "brass@club-internet.fr";
// === traitement des données du formulaire ============================================================
if (isset($_POST["envoyer"]))
 
{
// le formulaire a été soumis
        $etat = "erreur";
// Valeur par défaut. Prendra la valeur "ok" s'il n'y a pas d'erreur
// --- mise en forme des champs saisis dans le formulaire lors de sa soumission ---
        if (isset($_POST["email_expediteur"])) {
                 $_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"]));
        }
        if (isset($_POST["titre"])) {
                 $_POST["titre"]=trim(stripslashes($_POST["titre"]));
        }
        if (isset($_POST["message"])) {
                 $_POST["message"]=trim(stripslashes($_POST["message"]));
        }
        // --- test de la validité des champs saisis ---
        if (empty($_POST["email_expediteur"])) {
// il manque l'email de l'expéditeur
                 $erreur="Saisissez votre adresse email...";
        }
        elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email_expediteur"])){
// l'adresse e-mail n'est pas valide
                 $erreur="Votre adresse e-mail n'est pas valide...";
        }
        elseif (empty($_POST["message"])) {
// le message est vide
                 $erreur="Saisissez un message...";
        }
        else {
// --- tous les champs sont correctement remplis: on pourra envoyer le mail ---
                 $etat="ok";
                 
        }
}
else {
// --- le formulaire n'a pas été soumis ---
           $etat="attente";
}


// === fin de traitement des données du formulaire =======================================================
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="fr" lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Contacter Philippe Brass</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="page">
<div id="entete">
</div>
<div id="nav">
    <?php
        include"../nav.php";
    ?>
</div>
<div id="focus">
<div class="menuAdr">
<h3 class="titreAdr">ME JOINDRE</h3>
Philippe BRASS<br />
<i>guide haute-montagne</i><br />
Le Charmeil<br />
38680 PRESLES<br />
FRANCE<br /><br />
TELEPHONE (depuis la France) :<br />
fixe : 04 76 36 14 03<br />
portable : 06 81 22 34 48<br /><br />
PHONE (from other countries) :<br />
house : 0033 476 361 403<br />
mobil : 0033 681 223 448
</div>
</div>
<div id="main">

<h1>Envoyer un mail </h1>
<?php
valid_captcha()
?>
<?php
if ($etat!="ok") {// le formulaire n'a pas été soumis, ou soumis avec une erreur
         if ($etat=="erreur"){
//le formulaire a été soumis avec une erreur
                         echo "<p><strong>".$erreur."</strong></p>\n";
// afficher le message d'erreur

         }
         
?>
        <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
        <p class="form"><label for="email_expediteur">Votre adresse e-mail (obligatoire):</label><br />
        <input type="text" size="40" name="email_expediteur" id="email_expediteur" value="<?php
        if (!empty($_POST["email_expediteur"])) {
// l'adresse email de l'expéditeur a été saisie: la réafficher
                echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES);
        }
        ?>" />
        </p>
        <p class="form"><label for="titre">Titre de message (facultatif):</label><br />
        <input type="text" size="40" name="titre" id="titre" value="<?php
        if (!empty($_POST["titre"]))
       
         {
// le titre du message a été saisi: le réafficher
                echo htmlspecialchars($_POST["titre"],ENT_QUOTES);
        }
        ?>" />
        </p>
        <p class="form"><label for="message">Message (obligatoire):</label><br />
        <textarea name="message" id="message" cols="70" rows="8"><?php
        if (isset($_POST["message"])) {
// le message a été saisi: le réafficher
                echo htmlspecialchars($_POST["message"],ENT_QUOTES);
        }
        ?></textarea>
        </p>
        <td><?php aff_captcha(); ?></td>
        <p><input type="submit" name="envoyer" value="Envoyer" />
        </p>
        </form>
<?php
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail
        $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
        $entete .= "MIME-Version: 1.0";
        if (@mail($email_webmaster,$_POST["titre"],$_POST["message"],$entete)){
// mail envoyé
                echo "Votre message a été envoyé.<br />\n";
                echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Envoyer un autre message...</a>\n";
        }
        else {
// erreur lors de l'envoi du mail
                echo "Un problème s'est produit lors de l'envoi du message.\n";
                echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a>\n";
        }
}
?>


</div>
</div>
</body>
</html>




Cette discussion est classée dans : message, mail, email, post, if


Répondre à ce message

Sujets en rapport avec ce message

Pb, Formulaire / Mail [ par MaSenCo ] Bonjour,Je viens de mettre un formulaire / mail sur mon site, et j'ai un petit problème avec la fonction mail, c'est à dire que je reçois bien le mail Mail avec plusieurs destinataires [ par Anthotill ] Bonjour à tousJ'ai un petit soucis avec mon formulaire multi destinataire dans mon espace membre.En effet, malgré le fait que je choisisse deux (ou pl contact2 [ par nicomilville ] bonjour voici mon code ://Dans la ligne qui suit, remplacer webmaster@domaine.tld par l'adresse email du webmaster, à laquelle les messages devront êt Problème de formulaire mail :( [ par L42RY ] Bonjour à tous ! Tout d'abord, merci d'avoir pris le temps de cliquer sur mon post. J'ai créé ce dernier car j'ai un petit problème avec un formulaire Formulaire mail [ par L42RY ] Bonjour à tous ! Merci d'avoir cliqué sur mon topic, car je suis dans la mouise xD. Mon problème vient de ce formulaire mail que j'ai récupéré sur le mail() [ par soussan ] j'envoie des informations depuis un formulaire  flash vers une adresse email  et j'utilise le code suivant :le prob c que lorque les informations arri caracteres speciaux pour mail [ par tonydanza ] Bonjour a tous!J essaye de resoudre un petit probleme (banal)pour l envoie d un mail j ai besoin de connaitre comment on faitpour convertir les caract mail en email [ par tonydanza ] Bonjour a tous.voila mon probleme, j utilise la fonction mail pour envoyer des message et tout fonctionne tres bien normalement.mais la je viens de ch erreur d'envoi d'email de confirmation [ par box207 ] Bonjour a tous J’ai un problème d’envoi d’email de confirmation a partir de mon site d’annonce j’ai fait un essaye par ex : je dépose une annonce il


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales