Accès au manager - réservé aux membres

Navigation

Bouts de Codes PHP

Image anti-spam

Informations sur le code source PHP

Ecrit par :  R@f
Site de l'auteur Voir
Autres codes en PHP de l'auteur : [18] sources Voir
Date d'enregistrement du code le 13 Aout 2006 - Vu 6554 fois
Code source zippé: Télécharger le fichier ZIP
Impression: Imprimer le code
Ajouter la page à vos favoris

Description du code source

Informations sur le code source

Un petit script tout simple qui crée une image anti-spam pour protéger vos formulaires, ajout de news, de messages dans vos livres d'or ...

Code Source



.01
.02
.03
.04
.05
.06
.07
.08
.09
.10
.11
.12
.13
.14
.15
.16
.17
.18
.19
.20
.21
.22
.23
.24
.25
.26
.27
.28
.29
.30
.31
.32
.33
.34
.35
.36
.37
.38
.39
.40
.41
.42
.43
.44
.45
.46
.47
.48
.49
.50
.51
.52
.53
.54
.55
.56
.57
.58
.59
.60
.61
.62
.63
.64
.65
.66
.67
.68
.69
.70
.71
.72
.73
.74
.75
.76
.77
.78
.79
.80
.81
.82
.83
.84
.85
.86
.87
.88
.89
.90
.91
.92
.93
.94
.95
.96
.97
.98
.99
.100
.101
.102
.103
.104
.105
.106
.107
.108
.109
.110
.111
.112
 

<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Image anti-spam                                           */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts179-PHP.htm              */
/* Auteur         : R@f                                                       */
/* Date édition   : 13 Aout 2006                                              */
/* Website auteur : http://www.allpotes.ch                                    */
/*                                                                            */
/******************************************************************************/
?>
Si le script est enregistré dans le fichier: anti_spam.php, on appèle l'image comme ceci:

<img src="anti_spam.php?name=livreor&strlen=4" alt="anti-flood" />

>> le contenu dans l'image sera dans $_SESSION['livreor']
>> 4 caractères

Si $spam représente l'entrée utilsateur, le test se fait comme ceci:
if( $_SESSION['livreor'] != strtoupper( $spam ) )
// erreur ici

<?php
session_start();

// type de flood
$name $_GET['name'];
// nb de caractères
$strlen = (int) $_GET['strlen'];

// taille de l'image ( width )
$width $strlen 30 20;
$height 60;

// création
$img imagecreatetruecolor$width$height );
// antialising, c'est plus bô! :-)
imageantialias$img);

// chaine
$string 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$chaine '';
for( $i 0$i $strlen$i++ )
  $chaine .= $stringmt_rand035 ) ];
  
$_SESSION$name ] = $chaine;

// couleur de départ
$c1 = array( mt_rand200255), mt_rand200255), mt_rand200255) );
// couleur finale
$c2 = array( mt_rand150200), mt_rand150200), mt_rand150200) );

$colors = array( imagecolorallocate$img70130255 ) , 
                 imagecolorallocate$img255237175 ), 
                 imagecolorallocate$img166250186 ), 
                 imagecolorallocate$img253188251 ), 
                 imagecolorallocate$img255255255 ) );

// création de l'image
for( $i 0$i $width$i++ )
{
  $r $c1[0] + $i * ( $c2[0] - $c1[0] ) / $width;
  $v $c1[1] + $i * ( $c2[1] - $c1[1] ) / $width;
  $b $c1[2] + $i * ( $c2[2] - $c1[2] ) / $width;
  $color imagecolorallocate$img$r$v$b );
  
  imageline$img$i0$i$height$color );
}

// caractères
for( $i 0$i $strlen$i++ )
{
  $col imagecolorallocate$imgmt_rand0120 ),mt_rand0120 ), mt_rand0120 ));
  
             imagettftext$imgmt_rand2025 ), 
                           mt_rand( -3030 ), 
                           10 $i 3035, 
                           $col, 
                           'comic.ttf', 
                           $chaine$i ] );
}

// quelques lignes qui embêtent
for( $i 0$i 8$i++ )
{
imageline$imgmt_rand(0$width), 
           mt_rand(0$height), mt_rand(0$width), mt_rand(0$height), $colors[mt_rand0)] );
}

$noir imagecolorallocate$img00);

// bordure
imageline$img00$width0$noir );
imageline$img000$height$noir );
imageline$img$width 10$width 1$height$noir );

// header: image
header("Content-type: image/png");
imagepng$img ); 
imagedestroy$img );
?>

Fonctions du code source

Fonctions php / mysql PHP

  • session_start : Initialise une session - (PHP 4, PHP 5)
  • imagecreatetruecolor : Crée une nouvelle image en couleurs vraies - (PHP 4 >= 4.0.6, PHP 5)
  • imageantialias : Utiliser ou non les fonctions d'antialias - (PHP 4 >= 4.3.2, PHP 5)
  • mt_rand : Génère une meilleure valeur aléatoire - (PHP 4, PHP 5)
  • array : Crée un tableau - (PHP 4, PHP 5)
  • imagecolorallocate : Alloue une couleur pour une image - (PHP 4, PHP 5)
  • imageline : Dessine une ligne - (PHP 4, PHP 5)
  • imagettftext : Dessine un texte avec une police TrueType - (PHP 4, PHP 5)
  • header : Envoie un en-tête HTTP - (PHP 4, PHP 5)
  • imagepng : Envoie une image PNG vers un navigateur ou un fichier - (PHP 4, PHP 5)
  • imagedestroy : Détruit une image - (PHP 4, PHP 5)

Commentaires [3]


le 28/11/2007 à 15:10:00
Super resultat !

le 28/11/2007 à 15:13:00
Maintenant, je ne sais pas quel est réellement la fiabilité de cette méthode car les robots spammeurs ont l'air de savoir déchiffrer de plus en plus facilement les images.

Une meilleure solution serait peut-être de poser un calcul à l'utilisateur et lui demander de le résoudre.
Invité
le 23/10/2008 à 12:42:00
smile Sympa pour les morceaux de code

Poster un commentaire

:P :) :wink: :lol: :surprised: :confused: :mad: :no:
Taille du texte:
Couleur:
Code de sécurité

Les dernières offres d'emploi