Magazine Graphisme

[Php] Formulaire de contact avec protection

Publié le 28 novembre 2008 par Johnsgraphisme

[Php] Formulaire de contact avec protection

// 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.

[Php] Formulaire de contact avec protection



Articles relatifs


Retour à La Une de Logo Paperblog

LES COMMENTAIRES (2)

Par jmdubdub
posté le 07 avril à 16:14
Signaler un abus

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?

Par Lulu
posté le 11 mars à 16:23
Signaler un abus

essai du 11

A propos de l’auteur


Johnsgraphisme 140 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte