
On aura compris que le traitement des données est confié à un script reponse.php, que l'on va à présent examiner.
|
|
<?php session_start(); // ne pas oublier d'ouvrir la session pour comparer avec le captcha saisi $nom = $_POST['nom'] ; $prenom = $_POST['prenom'] ; $adresse = $_POST['adresse'] ; $email = $_POST['email'] ; $sexe = $_POST['sexe'] ; $pays = $_POST['pays'] ; ////récupération des informations saisies if(!empty($_POST['captcha']) && !empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['adresse']) && !empty($_POST['email']) && !empty($_POST['sexe']) && !empty($_POST['pays'])) ////examiner si les champs sont bien remplis { if(isset($_SESSION['captcha']) && $_POST['captcha'] == $_SESSION['captcha']) ////comparer le captcha saisi avec celui de notre session echo 'Le captcha est bon, votre nom est '.$_POST['nom'], $_POST['prenom'], $_POST['adresse'], $_POST['email'], $_POST['sexe'], $_POST['pays'], include ("info.php") ; ////inclusion du fichier envoyant nos données par email else echo 'La captcha n\'est pas bon.'; session_destroy(); } else echo 'Il faut remplir tout les champs.'; ?> |
On va à présent écrire le fichier captcha.php, fichier contenant l'élaboration du captcha, et qu'on inclut de la sorte
require('captcha.php');
En début du formulaire
|
<?php function motListe() { $liste = array('linux', 'musique', 'informatique'); return $liste[array_rand($liste)]; } function captcha() { $mot = motListe(); $_SESSION['captcha'] = $mot; return $mot; } ?> |
Voici maintenant le script qui va permettre d'envoyer les informations reçues par courrier, seulement si TOUS les champs ont été remplis et si le captcha est correct.
On pourrait et on devrait en profiter pour faire une vérification plus poussée sur les informations reçues, comme par exemple un traitement par expression régulières des champs email ou nom/prénom.
Ceci fait donc l'objet d'un paragraphe ci-dessous
Voici le fichier info.php basique :
|
<?php if(isset($_SESSION['captcha']) && $_POST['captcha'] == $_SESSION['captcha']) echo( "Votre nom: ".$nom." \n" ) ; echo( "Votre prénom: ".$prenom." \n" ) ; echo( "Votre adresse: ".$adresse." \n" ) ; echo( "Votre email: ".$email." \n" ) ; echo( "Votre sexe: ".$sexe." \n" ) ; echo( "Votre pays d'origine: ".$pays." \n" ) ; $TO = "user@nomdedomaine.net"; $h = "From: " . $TO; $message = ""; while (list($key, $val) = each($HTTP_POST_VARS)) { $message .= "$key : $val\n"; } mail($TO, $subject, $message, $h); ?> |
Je souhaitais intégrer un captcha dans un formulaire que j'ai publié sur mon blog, et on m'a dit de ne pas m'en faire,
cryptographp est fait pour moi, il suffit d'intégrer le plugin
Cryptographp et çà roule
Hélas pas pour moi, j'ai eu beau télécharger et activer le plugin, ajouter
<?php display_cryptographp(); ?>, dans mon formulaire, les dieux n'étaient pas avec moi
J'ai donc implémenté la solution exposée plus avant, mais il restait un petit problème, wordpress
ne comprend pas le php nativement, il faut lui rajouter un plugin
Execphp
Pour l’installer, dézippez le contenu du téléchargement puis uploadez le dossier wp_contents/plugins.
Il vous suffira ensuite de vous rendre dans la section plugins ou extensions de votre administration wordpress pour l’activer.
Une fois le plugin installé, il reste à se rendre dans la rubrique user/profile de l'interface d'administration de votre blog et de cocher "Disable WYSIWYG Conversion", afin qu'il n'interfère pas dans votre code php.
Ensuite, la voie est libre pour intégrer du code php dans vos articles et vos pages.
Il s'agit d'éviter que l'utilisateur rentre n'importe quoi à la place d'une adresse email,
on va donc appeler à notre secours les expressions régulières.
Voici une fonction qui vérifie si une chaine de caractères est seulement une adresse e mail valide.
|
function VerifierAdresseMail($adresse) { $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#'; if(preg_match($Syntaxe,$adresse)) return true; else return false; } Exemple d'utilisation: Après avoir récupéré le champ "adresse" d'un formulaire : $adresse=htmlentities($_POST['adresse']); if(VerifierAdresseMail($adresse)) echo '<p>Votre adresse est valide.<p>'; else echo '<p>Votre adresse e-mail n'est pas valide.<p>'; |
Cette astuce a été publiée par Jeff
Pour un numéro de téléphone, c'est encore plus simple
if(preg_match('`[0-9]{10}`',$tel));echo "C'est bon";
Sources de l'article