Accueil > > > IMAGE ANTI-SPAM AGRÉABLE À LIRE ET À REGARDER
IMAGE ANTI-SPAM AGRÉABLE À LIRE ET À REGARDER
Information sur la source
Description
Ce code génère un mot de passe qu'il affiche sous forme d'image. Ceci permet d'éviter les robots qui viennent 'pourrir' la vie des webmaster.
En fait la perticularité de celui ci c'est qu'il est vraiment pas moche à regarder et qu'il est très paramétrable donc difficile aux robots de le lire.
Source
- <?php
- /*
- Générateur de mot aléatoire
- Créé par : Alexandre ISOARD (http://surfmaths.free.fr/)
-
- Avant de l'utiliser vous devez faire la partie de sauvegarde du mot (ceci permet de choisir votre mode de stockage SQL ou Session)
- Elle est a la fin du fichier.
- Sans cela le code fonctionne quand même mais ne servira à rien sauf à afficher une jolie image.
- */
-
- // ---- Valeurs par défaut ----
- $autoriser=1; // Autorise l'envoi des paramètre. Utilise les paramètres par défaut si 0
- $longueur=6; // Nombre de caractères par défaut du mot aléatoire
- $mot=""; // Mot par défaut (laisser vide pour ne pas en mêtre)
- $bruit=100; // Force du bruit par défaut en pourcentage (ne pas mettre trop fort)
- $amplitude=2; // Amplitude des torsions latérales par défaut en pixels (ne pas mettre trop fort)
- $degrade=1; // Activation ou non du fond en dégradé par défaut
- $largeur=48; // Largeur en pixels par défaut attribuée à chaque caractère
- $hauteur=64; // Hauteur en pixels par défaut de l'image
- $caracteres="ABCEHILMNOPSTUWXYZ"; // Liste des caractères authorisés pour le mot aléatoire (éviter ceux qui se ressemblent)
- $taille=28; // Taille de la police utilisée par défaut
- $police=dirname($_SERVER["SCRIPT_FILENAME"])."/verdanab.ttf"; // Police de caractères TrueType utilisée par défaut
-
- // ---- Réception et traitement des données ----
- if($autoriser) { // Autorisation de réception des données ?
- if(isset($_REQUEST["mot"])) $mot=$_REQUEST["mot"];
- else if(isset($_REQUEST["longueur"])) $longueur=$_REQUEST["longueur"]; // Si non, vérifier la présence du paramètre de longueur du mot
- if(isset($_REQUEST["bruit"])) $bruit=$_REQUEST["bruit"]; // Vérifier la présence du paramètre de la force du bruit (ne pas mêtre de chiffre trop grand)
- if(isset($_REQUEST["amplitude"])) $amplitude=$_REQUEST["amplitude"]; // Amplitude des torsions latérales par défaut en pixels (ne pas mettre trop fort)
- if(isset($_REQUEST["degrade"])) $degrade=$_REQUEST["degrade"]; // Vérifie si l'on a spécifié si l'on souhaitait le fond en dégradé ou en bruit
- if(isset($_REQUEST["largeur"])) $largeur=$_REQUEST["largeur"]; // Vérifier la présence du paramètre de la largeur de caractère
- if(isset($_REQUEST["hauteur"])) $hauteur=$_REQUEST["hauteur"]; // Vérifier la présence du paramètre de la hauteur de l'image
- if(isset($_REQUEST["taille"])) $taille=$_REQUEST["taille"]; // Vérifier la présence du paramètre de la taille des lettres
- }
- if($mot=="") for($i=0;$i<$longueur;$i++) $mot.=$caracteres{mt_rand(0,strlen($caracteres)-1)}; // Génération aléatoire du mot si il est vide
- else $longueur=strlen($mot); // Mesure la longueur du mot
-
- // ---- Image de base ----
- $image=imagecreatetruecolor($largeur*$longueur,$hauteur); // Crée l'image de base
-
- $decalage=mt_rand(0,128); // Valeur aléatoire pour décaler les couleurs et ainsi avoir des couleurs foncées ou claires
- $a1=($decalage+mt_rand(0,64))%256; // Valeur aléatoire destinée aux composantes rouges
- $a2=($decalage+mt_rand(0,64))%256; // Valeur aléatoire destinée aux composantes vertes
- $a3=($decalage+mt_rand(0,64))%256; // Valeur aléatoire destinée aux composantes bleues
-
- // ---- Génération du fond ----
- for($y=0;$y<$hauteur;$y++) { // Création du fond ligne par ligne
- if($degrade) { // Création d'un dégradé
- $decalage=floor(64*$y/$hauteur); // Variable d'avancement du dégradé
- $r=($a1+$decalage)%256; // Définition de la composante rouge
- $v=($a2+$decalage)%256; // Définition de la composante verte
- $b=($a3+$decalage)%256; // Définition de la composante bleue
- } else { // Création d'un fond hachuré
- $r=($a1+mt_rand(0,64))%256; // Définition de la composante rouge
- $v=($a2+mt_rand(0,64))%256; // Définition de la composante verte
- $b=($a3+mt_rand(0,64))%256; // Définition de la composante bleue
- }
- $cc=imagecolorexact($image,$r,$v,$b); if($cc==-1) $cc=imagecolorallocate($image,$r,$v,$b); // Assigne les couleurs de la palette sans doublons
- imageline($image,0,$y,$largeur*$longueur,$y,$cc); // Déssine la ligne de la couleur générée
- }
-
- // ---- Génération des caractères ----
- $e=$largeur/2; // Calcul de l'écart nécessaire entre chaque caractère
- for($i=0;$i<$longueur;$i++) { // Déssine les caractères un par un
- $r=($a1+128+mt_rand(0,64))%256; // Définition de la composante rouge
- $v=($a2+128+mt_rand(0,64))%256; // Définition de la composante verte
- $b=($a3+128+mt_rand(0,64))%256; // Définition de la composante bleue
- $a=mt_rand(-15,15); // Angle aléatoire de déviation des caractères
- $cc=imagecolorexact($image,$r,$v,$b); if($cc==-1) $cc=imagecolorallocate($image,$r,$v,$b); // Assigne une couleur dans la palette sans doublons
- $tl=imagettfbbox($taille,$a,$police,$mot{$i}); // Encadrement des dimenssions de la lettre
- $ll=max($tl[0]-$tl[4],$tl[2]-$tl[6])/2; // Calcule la largeur maximale de la lettre
- $hl=max($tl[1]-$tl[5],$tl[3]-$tl[7])/2; // Calcule la hauteur maximale de la lettre
- $cxl=($tl[0]+$tl[2]+$tl[4]+$tl[6])/4; // Décalage du centre de la lettre suivant X par rapport à son origine
- $cyl=($tl[1]+$tl[3]+$tl[5]+$tl[7])/4; // Décalage du centre de la lettre suivant X par rapport à son origine
- $ah=$e-$ll; // Amplitude Horizontale du décalage aléatoire
- $av=$hauteur/2-$hl; // Amplitude Verticale du décalage aléatoire
- imagettftext($image,$taille,$a,floor($e*(1+2*$i)-$cxl+mt_rand(-$ah,$ah)),floor($hauteur/2-$cyl+mt_rand(-$av,$av)),$cc,$police,$mot{$i}); // Ecrit le caractère
- }
-
- // ---- Image filtrée ----
- $image2=imagecreatetruecolor($largeur*$longueur,$hauteur); // Crée l'image filtrée
- $d=mt_rand(-1,1); // Initialise une nouvelle valeur aléatoire pour l'ondulation
- // Applique un filtre personnalisé très efficace
- for($y=0;$y<$hauteur;$y++) for($x=0;$x<$largeur*$longueur;$x++) imagesetpixel($image2,$x,$y,imagecolorat($image,(floor($largeur*$longueur+$x+mt_rand(-$bruit,$bruit)/60+$amplitude*sin((2*$y/$taille+$d)*pi())))%($largeur*$longueur),(floor($hauteur+$y+mt_rand(-$bruit,$bruit)/60))%$hauteur));
-
- // ---- Ma marque (NE PAS ENLEVER NI MODIFIER) ----
- $b=imagecolorexact($image,255,255,255);
- $n=imagecolorexact($image,0,0,0);
- imagestring($image2,1,$largeur*$longueur-85,$hauteur-9,"surfmaths.free.fr",$b);
- imagestring($image2,1,$largeur*$longueur-87,$hauteur-9,"surfmaths.free.fr",$b);
- imagestring($image2,1,$largeur*$longueur-86,$hauteur-8,"surfmaths.free.fr",$b);
- imagestring($image2,1,$largeur*$longueur-86,$hauteur-10,"surfmaths.free.fr",$b);
- imagestring($image2,1,$largeur*$longueur-86,$hauteur-9,"surfmaths.free.fr",$n);
-
- // ---- Sauvegarde du mot ----
- /*
- Cette partie n'est pas faite. Je vous conseille de sauvegarder la variable $mot dans une session
- afin de pouvoir la réutiliser sans que l'utilisateur n'en connaisse le contenu ce qui permet de
- détecter si la lecture de l'image à été faite par un robot.
- */
-
- // ---- Affichage du résultat ----
- header("Content-type: image/png"); // Entête spécifiant le type de l'image
- imagepng($image2); // Affiche le résultat
- imagedestroy($image); // Supprime l'image originale
- imagedestroy($image2); // Supprime l'image finale
- ?>
<?php
/*
Générateur de mot aléatoire
Créé par : Alexandre ISOARD (http://surfmaths.free.fr/)
Avant de l'utiliser vous devez faire la partie de sauvegarde du mot (ceci permet de choisir votre mode de stockage SQL ou Session)
Elle est a la fin du fichier.
Sans cela le code fonctionne quand même mais ne servira à rien sauf à afficher une jolie image.
*/
// ---- Valeurs par défaut ----
$autoriser=1; // Autorise l'envoi des paramètre. Utilise les paramètres par défaut si 0
$longueur=6; // Nombre de caractères par défaut du mot aléatoire
$mot=""; // Mot par défaut (laisser vide pour ne pas en mêtre)
$bruit=100; // Force du bruit par défaut en pourcentage (ne pas mettre trop fort)
$amplitude=2; // Amplitude des torsions latérales par défaut en pixels (ne pas mettre trop fort)
$degrade=1; // Activation ou non du fond en dégradé par défaut
$largeur=48; // Largeur en pixels par défaut attribuée à chaque caractère
$hauteur=64; // Hauteur en pixels par défaut de l'image
$caracteres="ABCEHILMNOPSTUWXYZ"; // Liste des caractères authorisés pour le mot aléatoire (éviter ceux qui se ressemblent)
$taille=28; // Taille de la police utilisée par défaut
$police=dirname($_SERVER["SCRIPT_FILENAME"])."/verdanab.ttf"; // Police de caractères TrueType utilisée par défaut
// ---- Réception et traitement des données ----
if($autoriser) { // Autorisation de réception des données ?
if(isset($_REQUEST["mot"])) $mot=$_REQUEST["mot"];
else if(isset($_REQUEST["longueur"])) $longueur=$_REQUEST["longueur"]; // Si non, vérifier la présence du paramètre de longueur du mot
if(isset($_REQUEST["bruit"])) $bruit=$_REQUEST["bruit"]; // Vérifier la présence du paramètre de la force du bruit (ne pas mêtre de chiffre trop grand)
if(isset($_REQUEST["amplitude"])) $amplitude=$_REQUEST["amplitude"]; // Amplitude des torsions latérales par défaut en pixels (ne pas mettre trop fort)
if(isset($_REQUEST["degrade"])) $degrade=$_REQUEST["degrade"]; // Vérifie si l'on a spécifié si l'on souhaitait le fond en dégradé ou en bruit
if(isset($_REQUEST["largeur"])) $largeur=$_REQUEST["largeur"]; // Vérifier la présence du paramètre de la largeur de caractère
if(isset($_REQUEST["hauteur"])) $hauteur=$_REQUEST["hauteur"]; // Vérifier la présence du paramètre de la hauteur de l'image
if(isset($_REQUEST["taille"])) $taille=$_REQUEST["taille"]; // Vérifier la présence du paramètre de la taille des lettres
}
if($mot=="") for($i=0;$i<$longueur;$i++) $mot.=$caracteres{mt_rand(0,strlen($caracteres)-1)}; // Génération aléatoire du mot si il est vide
else $longueur=strlen($mot); // Mesure la longueur du mot
// ---- Image de base ----
$image=imagecreatetruecolor($largeur*$longueur,$hauteur); // Crée l'image de base
$decalage=mt_rand(0,128); // Valeur aléatoire pour décaler les couleurs et ainsi avoir des couleurs foncées ou claires
$a1=($decalage+mt_rand(0,64))%256; // Valeur aléatoire destinée aux composantes rouges
$a2=($decalage+mt_rand(0,64))%256; // Valeur aléatoire destinée aux composantes vertes
$a3=($decalage+mt_rand(0,64))%256; // Valeur aléatoire destinée aux composantes bleues
// ---- Génération du fond ----
for($y=0;$y<$hauteur;$y++) { // Création du fond ligne par ligne
if($degrade) { // Création d'un dégradé
$decalage=floor(64*$y/$hauteur); // Variable d'avancement du dégradé
$r=($a1+$decalage)%256; // Définition de la composante rouge
$v=($a2+$decalage)%256; // Définition de la composante verte
$b=($a3+$decalage)%256; // Définition de la composante bleue
} else { // Création d'un fond hachuré
$r=($a1+mt_rand(0,64))%256; // Définition de la composante rouge
$v=($a2+mt_rand(0,64))%256; // Définition de la composante verte
$b=($a3+mt_rand(0,64))%256; // Définition de la composante bleue
}
$cc=imagecolorexact($image,$r,$v,$b); if($cc==-1) $cc=imagecolorallocate($image,$r,$v,$b); // Assigne les couleurs de la palette sans doublons
imageline($image,0,$y,$largeur*$longueur,$y,$cc); // Déssine la ligne de la couleur générée
}
// ---- Génération des caractères ----
$e=$largeur/2; // Calcul de l'écart nécessaire entre chaque caractère
for($i=0;$i<$longueur;$i++) { // Déssine les caractères un par un
$r=($a1+128+mt_rand(0,64))%256; // Définition de la composante rouge
$v=($a2+128+mt_rand(0,64))%256; // Définition de la composante verte
$b=($a3+128+mt_rand(0,64))%256; // Définition de la composante bleue
$a=mt_rand(-15,15); // Angle aléatoire de déviation des caractères
$cc=imagecolorexact($image,$r,$v,$b); if($cc==-1) $cc=imagecolorallocate($image,$r,$v,$b); // Assigne une couleur dans la palette sans doublons
$tl=imagettfbbox($taille,$a,$police,$mot{$i}); // Encadrement des dimenssions de la lettre
$ll=max($tl[0]-$tl[4],$tl[2]-$tl[6])/2; // Calcule la largeur maximale de la lettre
$hl=max($tl[1]-$tl[5],$tl[3]-$tl[7])/2; // Calcule la hauteur maximale de la lettre
$cxl=($tl[0]+$tl[2]+$tl[4]+$tl[6])/4; // Décalage du centre de la lettre suivant X par rapport à son origine
$cyl=($tl[1]+$tl[3]+$tl[5]+$tl[7])/4; // Décalage du centre de la lettre suivant X par rapport à son origine
$ah=$e-$ll; // Amplitude Horizontale du décalage aléatoire
$av=$hauteur/2-$hl; // Amplitude Verticale du décalage aléatoire
imagettftext($image,$taille,$a,floor($e*(1+2*$i)-$cxl+mt_rand(-$ah,$ah)),floor($hauteur/2-$cyl+mt_rand(-$av,$av)),$cc,$police,$mot{$i}); // Ecrit le caractère
}
// ---- Image filtrée ----
$image2=imagecreatetruecolor($largeur*$longueur,$hauteur); // Crée l'image filtrée
$d=mt_rand(-1,1); // Initialise une nouvelle valeur aléatoire pour l'ondulation
// Applique un filtre personnalisé très efficace
for($y=0;$y<$hauteur;$y++) for($x=0;$x<$largeur*$longueur;$x++) imagesetpixel($image2,$x,$y,imagecolorat($image,(floor($largeur*$longueur+$x+mt_rand(-$bruit,$bruit)/60+$amplitude*sin((2*$y/$taille+$d)*pi())))%($largeur*$longueur),(floor($hauteur+$y+mt_rand(-$bruit,$bruit)/60))%$hauteur));
// ---- Ma marque (NE PAS ENLEVER NI MODIFIER) ----
$b=imagecolorexact($image,255,255,255);
$n=imagecolorexact($image,0,0,0);
imagestring($image2,1,$largeur*$longueur-85,$hauteur-9,"surfmaths.free.fr",$b);
imagestring($image2,1,$largeur*$longueur-87,$hauteur-9,"surfmaths.free.fr",$b);
imagestring($image2,1,$largeur*$longueur-86,$hauteur-8,"surfmaths.free.fr",$b);
imagestring($image2,1,$largeur*$longueur-86,$hauteur-10,"surfmaths.free.fr",$b);
imagestring($image2,1,$largeur*$longueur-86,$hauteur-9,"surfmaths.free.fr",$n);
// ---- Sauvegarde du mot ----
/*
Cette partie n'est pas faite. Je vous conseille de sauvegarder la variable $mot dans une session
afin de pouvoir la réutiliser sans que l'utilisateur n'en connaisse le contenu ce qui permet de
détecter si la lecture de l'image à été faite par un robot.
*/
// ---- Affichage du résultat ----
header("Content-type: image/png"); // Entête spécifiant le type de l'image
imagepng($image2); // Affiche le résultat
imagedestroy($image); // Supprime l'image originale
imagedestroy($image2); // Supprime l'image finale
?>
Conclusion
Pour avoir la dernière version de se code source je vous conseille de faire un tour sur mon site dans la section téléchargements : http://surfmaths.free.fr/
J'ai mis autant de commentaires que possibles, si vous ne comprenez pas, demandez moi, j'essaierai de vous expliquer.
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Mettre une valeur aléatoire à chaque ligne d'une colonne [ par creastic ]
Bonjour, J'ai créé une table dans phpMyAdmin où j'ai trois colonne texte : nom, prénom, mot de passe J'ai importé quelques centaine de nom et prénom,
Bot Twitter [ par Senny26 ]
Salut à tous ! Bon, vous allez certainement me prendre pour un fou, mais vous êtes (presque) mon seul recours. Apres une semaine de recherches infruc
Arrays association aléatoire et non identique [ par ricozone3d ]
Bonjour, je cherche à faire associer 2 arrays (contenant chacun les mêmes valeurs mais ordonnées de façon différente) afin de créer des paires uniques
Mur d'image aléatoire [ par seyvapul ]
Bonjour à tous. Je souhaite faire sur ma page de garde, un mur d'images (Tableau 3l 5c, les miniatures font 95x95) qui changent de manière aléatoires
Sécurité des mots de passe [ par Jiho64 ]
Bonjour, Je projette d'écrire un sujet sur la sécurité des sites web en général et je souhaiterai avoir quelques précisions sur les mots de passe, a
utiliser un login et mot de passe pour accéder à ma page d'accueille [ par msi079 ]
[b]salut .je tente d'utiliser un code que j'ai eu sur le net . mais j'arrive pas à l'adapter à mon cas . j'ai un fichier index.php et victime.php l'ut
Problème pour créer fichier CSV en PHP à partir d'un tableau et d'une base de données [ par Vedo67 ]
Bonjour à tous, j'aurais besoin d'un petit coup de main sur un problème j'essaie de créer un fichier csv à partir d'un tableau que j'affiche sur une p
accès page membre [ par stephelle ]
Bonjour, un petit problème. Ma page d'accès tourne en rond en me disant "mauvais login ou mot de passe" alors que je suis bien enregistrer dans ma bas
Procédure stockée: Nom de table=Mot Clef [ par suxxa ]
Bonjour, Je suis actuellement sur un petit dev web et après avoir quasiment terminé la partie php, je viens de me rendre compte que ma table nommée "
[BAR]Trouver des missions web rémunérées [ par zattara ]
Bonjour à tous, Ca fait plus de cinq ans que je trouve des missions web sur codeur, progonline (avant), 404works, mot-a-mot etc etc. Je perdais bcp d
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
GOOGLE MAPGOOGLE MAP par fatmanajjar
Cliquez pour lire la suite par fatmanajjar
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|