// Alors, voici un petit tutoriel ressorti d’un fond de tirroir, qui explique comment réaliser et cela en php, un formulaire d’envois de mail avec une image de protection. Pour dire plus simplement, c’est un formulaire de contact. Nous allons faire cela en 3 étapes, il faudra créer dans un premier temps l’image dynamique qui permettra de mettre en place un sécurité pour les spambots. Dans un second temps le formulaire de contact en lui même, et enfin le traitement du formulaire. Se sont des étapes classiques pour la création d’un module comme celui-ci.
Création de l’image dynamique :
<? // Démarage d'une session session_start(); // Définition de la liste des caractères autoriés, on exclus le 0 $liste = "abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // On créer la valeur du code $code = ''; // On crée la chaine de 5 caractères while(strlen($code) != 5) { $code .= $liste[rand(0,63)]; } $_SESSION['code']=$code; // On crée une image $larg = 50; $haut =20; $img = imageCreate($larg, $haut); $rouge = imageColorAllocate($img,255,0,0); $noir = imageColorAllocate($img,0,0,0); $code_police=5; header('Expires: Mon, 08 Dec 2008 12:00:00 GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', false); header("Content-type: image/jpeg"); // On intégre le code dans l'image imageString($img, $code_police,($larg-imageFontWidth($code_police)*strlen("".$code.""))/2,0, $code,$noir); // On créé une image de mauvaise qualité, 23% de l'image normal imagejpeg($img,'',23); imageDestroy($img); ?>
Enregistrez votre fichier sous dynamique.php
Création du formulaire de contact :
<form action="contact.php" method="post" name="contact" id="contact"> <p> <label for="mail">Votre adresse mail :</label><br /> <input type="text" id="mail" name="mail" size="20" maxlength="100"/><br /> <label for="objet">Objet du mail :</label><br /> <input name="objet" type="text" size="20" maxlength="100" /><br /> <label for="msg">Texte du mail :</label><br /> <textarea name="msg" cols="40" rows="4"></textarea><br /> <img src="dynamique.php" alt="securisation du formulaire" title="securisation du formulaire" /><br /> <label for="verif">Recopier le code ci dessus dans le champ qui suit :</label><br /> <input type="text" name="verif" size="10" maxlength="5" /> </p> <p> <input type="submit" value="Envoyer" /> </p> </form>
Enregistrez votre fichier sous formulaire.php
Création du traitement :
<? // Demarrage de session session_start(); // Test de la variable if(!isset($_SESSION['code']) OR strlen($_SESSION['code']) !=5) exit("Erreur !"); // Comparaison des valeurs if($_SESSION['code'] != $_POST['verif']) exit("Erreur les valeurs sont différentes !"); // Recuperation du mail de l'envoyeur $exp = $_POST['mail']; // On formate les chaines $objet = stripslashes($_POST['objet']); $msg = stripslashes($_POST['msg']); // Envoi du mail $envoi=mail("[email protected]", $objet, $msg,"From: $exp\r\n"."Reply-To: $exp\r\n"); if($envoi) echo"Le mail a bien été envoyé !"; else echo"L'envoi a échoué, merci de renouveller l'opération !"; // On efface et détruit les varaibles de sessions session_unset(); session_destroy(); ?>
Enregistrez ce fichier sous contact.php
Voila, le tour est joué, il ne reste plus qua le tester.
LES COMMENTAIRES (2)
posté le 07 avril à 16:14
Bonjour, J'ai fait un copié-coller de formulaire.php, de dynamique.php, et de contatc.php, seulement le code à faire n'apparait pas sur le formulaire?
posté le 11 mars à 16:23
essai du 11