Captcha ( anti-spam, anti-robot )

Soyez le premier à donner votre avis sur cette source.

Vue 14 735 fois - Téléchargée 1 495 fois

Description

Génération d'une image pour anti-robot/anti-spam

A chaque chargement de la page, voici ce qui change :

1/ La couleur de fond
2/ La chaîne de caractère
3/ La couleur de chaque caractère ( plus foncé que la couleur de fond dans tous les cas )
4/ La police de chaque caractère
5/ L'angle de chaque caractère
6/ La taille de chaque caractère
7/ La position vertical de chaque caractère

Aucun caractère sort de l'image.
De temps en temps il y a des chiffres qui se chevauchent suivant l'angle, le chiffre, sa taille et sa position, mais ça reste dans 99% des cas, lisible. ( pour ma part )

Source / Exemple :


<?php
session_start();

srand(); //initialisation du générateur mais plus obligatoire > PHP 4.2

// Définition du content-type
header("Content-type: image/png");

$lettres = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');

$code = $lettres[rand(0,25)].rand(100,1000000); 
$longueurcode = strlen($code);

$_SESSION['code'] = $code; //pour pouvoir tester si le code saisie est bien égal à celui saisie ;)

$largeur = $longueurcode * 25;
$hauteur =  40;

$image = imagecreatetruecolor($largeur, $hauteur);

$couleurfond = imagecolorallocate($image, rand(150,255),rand(150,255),rand(150,255));

imagefilledrectangle($image, 0, 0, $largeur, $hauteur, $couleurfond);

$fontchiffre = array('1.ttf','2.ttf');
$fontlettre = array('3.ttf');

imagettftext($image, rand(15,30), rand(-45,15), 10, 35, imagecolorallocate($image, rand(10,100) ,rand(10,100),rand(10,100)), $fontlettre[0], $code[0]);

for ($i = 1; $i < $longueurcode; $i++) 
{
    $largeurx = 20 * $i + 30;
    $hauteury = rand(25,40);
    imagettftext($image, rand(27,32), rand(0,45), $largeurx,$hauteury, imagecolorallocate($image, rand(10,100) ,rand(10,100),rand(10,100)), $fontchiffre[rand(0,1)], $code[$i]);
}

imagepng($image); //génère l'image
imagedestroy($image); //détruit l'image

?>

Conclusion :


Un petit truc avec la police 3.ttf, elle s'affiche en majuscule, alors que la lettre est en minuscule, mais bon ça, c'est le créateur de la police qui a voulu tout mettre en majuscule, la seule différence, c'est que la lettre est inversé pour les majuscules.. ><
Pour ma part, vu que j'ai mis que des minuscules, lors du test, j'utilise la fonction php strtolower() pour le code saisie.

Voilà voilà, si quelqu'un arrive a bousillé mon captcha, si c'était possible qu'il me le fasse savoir pour que je puisse l'améliorer.
C'est ma première source que je poste ici, en espérant qu'elle puisse aider des personnes.

Si vous avez des questions, ou des critiques, n'hésitez pas.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_romantica
Messages postés
12
Date d'inscription
vendredi 4 février 2011
Statut
Membre
Dernière intervention
8 septembre 2011
-
bonjour,petit script super léger,bravo a l'auteur,seule petit problème le code est illisible j'ai essayé de changer la police en:# $fontchiffre = array('verdana.ttf','verdana.ttf');
mais l'image ne s'affiche plus.
autre problème quand on valide il m'affiche cette erreur:

The requested URL /erreur dans le code capatchaif ($modif = 1) { echo was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
merci de l'aide
kypon
Messages postés
9
Date d'inscription
jeudi 30 juillet 2009
Statut
Membre
Dernière intervention
9 octobre 2009
-
Merci beaucoup Jabirmed t trop cool
jabirmed
Messages postés
19
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
9 avril 2010
-
Bonjour kypon ,

j'ai envoyé un message a votre boite email

parce que tu es faire un changement de nom de champs pour cela ça marche pas

@+
kypon
Messages postés
9
Date d'inscription
jeudi 30 juillet 2009
Statut
Membre
Dernière intervention
9 octobre 2009
-
Merci pour l'adresse de cryptographp, mais je n'aimes pas ce captcha, trop de fichiers, j aimerai vraiment utiliser celui ci, j ai presque reussi, maintenant le captcha fonctionne, mais si il n est pas bon le message s envoi quand meme j v continuer a me prendre la tete j finirais bien par y arriver. Merci a toi Jabirmed
jabirmed
Messages postés
19
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
9 avril 2010
-
Bonjour KYPON ,

voila un autre solution très simple a utilisé est ça marche à 100 % :)

télécharger ici : http://www.captcha.fr/index.php?page=4&langue=fr

explication ici : http://www.captcha.fr/index.php?page=34

ce script ça marche sur toutes les serveur

( je suis maintenant au travaille et je peut pas connecter au msn mais le soir oui )

@+

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.