[script] lutte anti spam
10 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
[script] lutte anti spam
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
, 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/
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
Au début de votre page contenant le formulaire, inserez le code suivant:
- Code: Tout sélectionner
<?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: Tout sélectionner
<?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: Tout sélectionner
<?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/
Dernière édition par fandecine le Mar Nov 29, 2005 12:35, édité 1 fois.
Bonjour,
J'essaye d'utiliser votre script dans une de mes pages pour gérer les inscriptions des utilisateurs.
Cependant, je n'arrive pas à me servir du "script de génération de code secret".
Comment faut-il l'insérer ? Que retourne-t-il ?
Pour le moment, tout ce que j'obtiens c'est :
Pourriez-vous m'aider ?
Cordialement.
J'essaye d'utiliser votre script dans une de mes pages pour gérer les inscriptions des utilisateurs.
Cependant, je n'arrive pas à me servir du "script de génération de code secret".
Comment faut-il l'insérer ? Que retourne-t-il ?
Pour le moment, tout ce que j'obtiens c'est :
- Code: Tout sélectionner
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/www/nmaisons/inscriptions_secu/secret.php:1) in /home/www/nmaisons/inscriptions_secu/secret.php on line 2
Warning: Cannot modify header information - headers already sent by (output started at /home/www/nmaisons/inscriptions_secu/secret.php:1) in /home/www/nmaisons/inscriptions_secu/secret.php on line 4
Fatal error: Call to undefined function: imagecreatefromjpeg() in /home/www/nmaisons/inscriptions_secu/secret.php on line 5
Pourriez-vous m'aider ?
Cordialement.
Je vais résumer un petit peu le contenu de mes pages pour vous montrer ce que ça donne...
Page formulaire.php :
Page formulaire.html :
A l'emplacement où je veux mettre l'image, faut-il que je mette directement le code ou faut-il que j'include un fichier contenant ce code ?
J'ai essayé d'include secret.php...
Page secret.php :
Page formulaire.php :
- Code: Tout sélectionner
<?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
// Affichage du formulaire
include ("formulaire.html");
?>
Page formulaire.html :
A l'emplacement où je veux mettre l'image, faut-il que je mette directement le code ou faut-il que j'include un fichier contenant ce code ?
J'ai essayé d'include secret.php...
Page secret.php :
- Code: Tout sélectionner
<?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);
?>
pour les deux erreurs suivantes:
Il faut que le script soit inseré en tout début de page avant toute instruction html ou php!
Pour cette erreur:
Le support JPEG n'est disponible que si PHP a été compilé avec GD-1.8 ou supérieur.
La fonction gd_info retourne des informations à propos de la bibliothèque GD installée.
Tu peux trouver la librairie GD et toutes les infos à cette adresse: http://www.boutell.com/gd/
- Code: Tout sélectionner
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/www/nmaisons/inscriptions_secu/secret.php:1) in /home/www/nmaisons/inscriptions_secu/secret.php on line 2
Warning: Cannot modify header information - headers already sent by (output started at /home/www/nmaisons/inscriptions_secu/secret.php:1) in /home/www/nmaisons/inscriptions_secu/secret.php on line 4
Il faut que le script soit inseré en tout début de page avant toute instruction html ou php!
Pour cette erreur:
- Code: Tout sélectionner
Fatal error: Call to undefined function: imagecreatefromjpeg() in /home/www/nmaisons/inscriptions_secu/secret.php on line 5
Le support JPEG n'est disponible que si PHP a été compilé avec GD-1.8 ou supérieur.
La fonction gd_info retourne des informations à propos de la bibliothèque GD installée.
Tu peux trouver la librairie GD et toutes les infos à cette adresse: http://www.boutell.com/gd/
Bonjour,
Je vous remercie de votre aide.
Pour les erreurs de session et de header, c'est réglé.
Toutefois, j'ai toujours l'erreur suivante :
Cependant, la librairie GD2 est installée sur mon serveur.
De plus, j'ai fais un include de mon fichier secret.php (celui où l'image est créée) au début de mon fichier pour le formulaire. L'image va s'insérer à cet endroit là, non ?
Je vous remercie de votre aide.
Pour les erreurs de session et de header, c'est réglé.
Toutefois, j'ai toujours l'erreur suivante :
- Code: Tout sélectionner
Fatal error: Call to undefined function: imagecreatefromjpeg() in /home/poudlard/www/nmaisons/inscriptions_secu/secret.php on line 3
Cependant, la librairie GD2 est installée sur mon serveur.
De plus, j'ai fais un include de mon fichier secret.php (celui où l'image est créée) au début de mon fichier pour le formulaire. L'image va s'insérer à cet endroit là, non ?
sebvita a écrit:Bonjour,
Je vous remercie de votre aide.
Pour les erreurs de session et de header, c'est réglé.
Toutefois, j'ai toujours l'erreur suivante :
- Code: Tout sélectionner
Fatal error: Call to undefined function: imagecreatefromjpeg() in /home/poudlard/www/nmaisons/inscriptions_secu/secret.php on line 3
Cependant, la librairie GD2 est installée sur mon serveur.
si ça affiche ça c'est qu'elle est mal installé la librairie GD à mon avis
sinon il faut pas faire un include php, mais un img src html
Ce script est très simpathique, mais j'y verrais uen petite amélioration à faire :
Remplacer
if ($_POST['Secret']==$_SESSION['secret'])
Par
if (strtolower($_POST['secret'])==strtolower($_SESSION['secret']))
Je pense que ça peut éviter des confusions
Remplacer
if ($_POST['Secret']==$_SESSION['secret'])
Par
if (strtolower($_POST['secret'])==strtolower($_SESSION['secret']))
Je pense que ça peut éviter des confusions
Pas besoin d'utiliser de variable de session, je ferai :
1-> Générer une chaine de caractère (exemple : abcdef)
2-> Générer le md5 de la chaine $K (exemple : f4sdq5f4sd54ffsd54f5)
3 -> Générer l'image contenant la chaine abcdef
Dans le formulaire :
on affiche l'image + la variable $K en hidden + un text input $I
Lors de la soumission on vérifie que :
md5($I)=$K
Thibaud
1-> Générer une chaine de caractère (exemple : abcdef)
2-> Générer le md5 de la chaine $K (exemple : f4sdq5f4sd54ffsd54f5)
3 -> Générer l'image contenant la chaine abcdef
Dans le formulaire :
on affiche l'image + la variable $K en hidden + un text input $I
Lors de la soumission on vérifie que :
md5($I)=$K
Thibaud
10 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Google Pack s'enrichit de 2 nouveaux logiciels gratuits
- Articles de R et D sur le PageRank, le SpamRank et le spam...
- Algorithme de détection du link spam de masse
- Archive.org n'indexe plus rien depuis le 22 août 2008 ?
- Des mises à jour de plus en plus fréquentes chez Google
- Matt Cutts n'en fait-il pas un peu trop ?
- Des informations sur l'algorithme de Yahoo Search fournies par Priyank Garg
- La valse des rachats de sociétés par Google en mai/juin 2007
- L'attribut rel="nofollow" sur les liens : lutte contre le spam...
- Etude statistique de la structure du web
- Contribuez à la lutte anti-spam !
- Lutte anti spam - Effacement Automatique des Users sans post
- script anti-spam robots et anti-pirates...
- script anti-spam
- aide script anti spam linker
- Début de la lutte anti triche
- Lutte anti SMS (français quand tu nous...)
- google et la lutte contre le spam [opinion]
- Lutte contre le spam de commentaires de blog
- Lutte contre le spam : Google se radicalise (vachement !)
Consultez la description détaillée des produits ou services de Google suivants : Google TrustRank
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités







le forum