fandecine
WRInaute passionné
voilà bien longtemps que je n'avais pas publié de script PHP...
L'objet de ce script est de protéger vos formulaires de contact par un code secret généré graphiquement à recopier dans un champ du formulaire afin d'éviter à des robots de vous bombarder de mails de spam.
La code secret, pour rester secret :wink: , est passé par variable de session.
Au début de votre page contenant le formulaire, inserez le code suivant:
Votre script de traitement de formulaire doit resembler à ceci
Enfin, le script de génération de code scret
Je vous donne aussi l'image utilisée pour tramer le code secret dans cet exemple
Voilà, c'est fini!
edit: pour faire plaisir à correiaj, ce script utilise la librairie GD2 disponible ici: http://www.boutell.com/gd/ :wink:
L'objet de ce script est de protéger vos formulaires de contact par un code secret généré graphiquement à recopier dans un champ du formulaire afin d'éviter à des robots de vous bombarder de mails de spam.
La code secret, pour rester secret :wink: , est passé par variable de session.
Au début de votre page contenant le formulaire, inserez le code suivant:
Code:
<?php
session_start();//ouverture d'une session
$secret=""; //initialisation du code secret
for($i=0;$i<5;$i++) { //génération du code secret à 5 caractères
$secret.=chr(mt_rand(65, 90));
}
$_SESSION['secret'] = $secret;//stockage du code dans une variable de session
?>
Votre script de traitement de formulaire doit resembler à ceci
Code:
<?php
session_start();
if ($_POST['Secret']==$_SESSION['secret']) { // code secret valide
votre code de traitement du formulaire
} else { // code scret invalide
votre code de traitement de code secret invalide
}
unset($_SESSION['secret']); // on detruit le code secret
votre code de traitement de retour
?>
Enfin, le script de génération de code scret
Code:
<?php
session_start(); //demarrage de la session
$text=$_SESSION['secret']; //on récupére le code à générer
header("Content-type: image/png"); //définition du type d'image générée (png)
$im = imagecreatefromjpeg("secret.jpg");// Création de l'image à partir d'un fichier contenant le fond de l'image à générer
$id = imagecreatefromjpeg("secret.jpg");// Création d'une deuxième image identique
$grey = imagecolorallocate($im, 128, 128, 128); // définition de la couleur "gris"
$black = imagecolorallocate($im, 0, 0, 0); // définition de la couleur "noir"
$font = 'COURBD.TTF';// à remplacez le chemin par votre propre chemin de police TTF
for($i=0;$i<5;$i++) { //boucle de génération des 5 caractères du code secret
$angle=mt_rand(10,30); //définition d'un angle aléatoire entre 10 et 30 degrés
if(mt_rand(0,1)==1) $angle=-$angle; //définition aléatoire du signe à appliquer à l'angle
imagettftext($im, 14, $angle, 11+(20*$i), 21, $grey, $font, substr($text,$i,1));// génération de l'ombre d'un caractère du code secret en gris
imagettftext($im, 14, $angle, 10+(20*$i), 20, $black, $font, substr($text,$i,1));// génération du caractère du code secret en noir
}
$id=imagerotate ( $id, 180,0 ); // on applique une rotation de 180° à notre deuxième image créée à partier de l'image de fond
imagecopymerge ( $im, $id, 0, 0, 0, 0, 120, 30, 50 ); //on fusione cette image à notre code secret avec un facteur de tranparence de 50%
imagepng($im); //notre code secret est terminé
imagedestroy($im); //on libére nos ressources images
imagedestroy($id);
?>
Je vous donne aussi l'image utilisée pour tramer le code secret dans cet exemple

Voilà, c'est fini!
edit: pour faire plaisir à correiaj, ce script utilise la librairie GD2 disponible ici: http://www.boutell.com/gd/ :wink: