Accueil > Forum > > > > valider un captcha
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
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|