Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Site Web > PHP > [Galerie] Réalisation de CAPTCHAs > Lecture du sujet

[Galerie] Réalisation de CAPTCHAs

On veut les votres

Vous devez être inscrit pour pouvoir poster des messages

Page : 1  2  3  4  ...  35  36  37  38  Suivante
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1  2  3  4  ...  35  36  37  38  Suivante
Hors ligne ilys # Posté le 25/07/2007 à 02:48:04
Vive le Rock, Linux, et le SDZ
Avatar
Groupe : Membres
Bonjours les zéros.

Pour commencer, c'est quoi un captcha??


Citation : Wikipédia
Un Captcha est une forme de test de Turing permettant de différencier de manière automatisée un utilisateur humain d'un ordinateur.

En d'autre mots un captcha c'est l'image un peu bizard qu'on a dû remplir déchiffrer et recopier pendant notre inscription sur le SDZ.
En passant voici un captcha générer par le sdz :
Image utilisateur

Vous me direz à quoi celà peut bien servir?
Je vous répondrez pour ne pas laisser les bots qui jonchent le web, vous pourrir la vie avec des pubs pour acheter du Viagra à -30% en Tchécoslovaquie
Merci à DeadPixel pour ce merveilleux exemple j'aurais pas trouvé mieux :p


Il y a sur ce site plusieurs tutoriels qui explique comment faire des captcha simple et rapide.
Ces captchas sont très efficace pour les petits sites, et sont très rapides à générer, mais là n'est pas le problème car le défit s'intéresse plus à la beauté de ces images, qu'à leurs efficacités.

Le défie


Le défie consiste à ce que vous poster votre captchas en faisant bien attention à mettre l'image que génère le captcha. Votre code devras bien sûr être clair et bien commenté.
Il est interdit de poster ici des captchas telecharger sur d'autre site! Vous pouvez par contre vous aider de tutos pour les faire.

Quelle sont les règles?


Tout les coups sont permis. Vous pouvez utilisez n'importe quelle version de PHP ou de GD.

Je n'ai pas encore atteint le cours de m@teo21 sur la manipulation d'image, je quitte le post c'est ça? :'(


Mais no, je demanderais aussi à ceux qui ne font que passer, de prendre le temps de noter sur 20 les captchas qu'ils voient sur ce post.
Ils pourront aussi utiliser ces captchas pour leurs sites, raison pour laquelle le code doit être bien commenté. :)

Pour vous aider


Voici quelque liens bien utiles pour la création de telles images:
En savoir plus sur les captchas sur Wikipedia
Créer une image de validation de DeadPixel
Faire une image anti-bots facilement de Kermi

Si j'en ai oublié faite le moi savoir par MP.
Sinon pour les liens externe, il y a Google :D .

au passage je vous largue mon première essais :

Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. //***********************
  3. //**Création de l'image**
  4. //***********************
  5.        
  6.         //Je définie d'abord la taille de l'image
  7. $width=110;
  8. $height=40;
  9.         //Ensuite je l'a crée
  10. $image=imagecreatetruecolor($width,$height);
  11.         //L'image de font avec la couleur $couleur1
  12. $couleur1  = imagecolorallocate($image, $rouge=rand(0,255), $vert=rand(0,255), $bleu=rand(0,255));
  13. imagefill($image,0,0,$couleur1);
  14. //***************************
  15. //**Création des caractères**
  16. //***************************
  17.         //Ensuite vient la couleur des caractères $couleur2 qui est fonction de $couleur1
  18. $couleur2= imagecolorallocate($image,255-$rouge,255-$vert,255-$bleu);
  19.         //Mon script génere à chaque fois un nombre de caractere
  20. $nbr_caractere=rand(5,7);
  21.         //Chaque caractère auras une taille à lui en 14 et 18 point
  22. $taille_char_min=14;
  23. $taille_char_max=18;
  24.         //Ca se sont les caractères autorisés. J'ai enlevé I, J, O, Q, S, U, V, 0, 1 et ce pour leur faible lisibilitée
  25. $char_autorise = 'ABCDEFGHKLMNPRTWXYZ234569';
  26.         //La distance entre le bord et le premier caractère
  27. $x = 4;
  28.         //L'espace entre les caractères
  29. $inter_space = 18;
  30. //*************************************
  31. //**Boucle d'affichage des caractères**
  32. //*************************************
  33. $i=0;
  34. while($i<$nbr_caractere)
  35.         {
  36.         //A chaque caractère ses paramètres propre à lui
  37.         $caractere_setting[$i]['caractere']=$char_autorise{rand(0,strlen($char_autorise)-1)};
  38.         $caractere_setting[$i]['taille']=rand($taille_char_min, $taille_char_max);
  39.         $caractere_setting[$i]['angle']=rand(-20,20);
  40.         //Et voilà la fonction que j'utilise : "imagettftext" que j'ai bien cherché et qui est plus adapté pour ce job que "imagestring".
  41.         imagettftext($image,$caractere_setting[$i]['taille'],$caractere_setting[$i]['angle'],$x,30,$couleur2,'ELECHA.TTF',$caractere_setting[$i]['caractere']);
  42.         $x+=$inter_space;
  43.         $i++;
  44.         }
  45. //********************************************************
  46. //**Sauvegarde de l'image dans le fichier "captcha.png"**
  47. //********************************************************
  48. imagepng($image, "captcha.png");
  49. ?>

Il faudra mettre au coté de ce script la police de caractère ELECHA.TTF telechargeable ici.
Ce script génère des images comme ceci
Image utilisateur


Tous les captchas du post
CréateurCaptcha génerer
tnsaad Image utilisateur
Vizigr0u Image utilisateur
wonerz Image utilisateur
tnsaad Image utilisateur
salegoss Image utilisateur
OctetsMotion Image utilisateur
Blackhole Image utilisateur
jaye Image utilisateur
bilou89 sans aperçue
wonerz Image utilisateur
jaye Image utilisateur
mwsaz Image utilisateur
istu5 Image utilisateur
K-jasi Image utilisateur
gierschv Image utilisateur
Chaoxys Image utilisateur
Stax Image utilisateur


Après celà je n'ai plus qu'à vous souhaiter bonne chance, et bon captchage... ;)
Édité le 21/09/2007 à 14:54:11 par ilys

Fait par Tn. :soleil:
>>>>>>Mon tuto sur la Recherche séquentielle et dichotomique
>>>>>>Mon topic sur les images anti-bots
Venez signer la PETITION ANTI-CENSURE
 
Hors ligne Vizigr0u # Posté le 25/07/2007 à 03:29:18
fooo !
Avatar
Groupe : Membres
Bonjour, voici à quoi ressemblent mes captcha ;)
Image utilisateur

Le code source est : Code : PHP
<?php
session_start();

$longueur_code = 6;
$lettres = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789';
$longueur = strlen($lettres);
$code = '';
$largeur = 300;
$hauteur = 50;

$police = array('trebuc.ttf', 'tahomabd.ttf', 'verdanab.ttf');
$image = imagecreatetruecolor($largeur, $hauteur);
$fonce = imagecolorallocate($image, mt_rand(0, 70), mt_rand(0, 70), mt_rand(0, 70));

//lignes "horizontales" sur le fond
for($i = 0; $i < 6; $i++)
{
        $couleur_ligne = imagecolorallocate($image, mt_rand(150, 255), mt_rand(150, 255), mt_rand(150, 255));
        imageline($image, 0, mt_rand(0, $hauteur), $largeur, mt_rand(0, $hauteur), $couleur_ligne);
}

//lignes "verticales" sur le fond
for($i = 0; $i < 6; $i++)
{
        $couleur_ligne = imagecolorallocate($image, mt_rand(150, 255), mt_rand(150, 255), mt_rand(150, 255));
        imageline($image, mt_rand(0, $largeur), 0, mt_rand(0, $largeur), $hauteur, $couleur_ligne);
}

$x = mt_rand(2,20);
for($i = 0; $i < $longueur_code; $i++)
{
        $lettre_ajouter = $lettres[mt_rand(0,$longueur-1)];
        $code .=  $lettre_ajouter;
        $angle = mt_rand(-25, 20);
        $taille_police = mt_rand(25,35);
        $hauteur_police = ($hauteur / 2) + ($taille_police/2);
        $couleur_texte = imagecolorallocate($image, mt_rand(150, 255), mt_rand(150, 255), mt_rand(150, 255));
        imagettftext($image, $taille_police, $angle, $x, $hauteur_police, $couleur_texte, realpath($police[array_rand($police)]), $lettre_ajouter);
       
        $x += 1.2 * $taille_police + mt_rand(0,2);
}


$_SESSION['code'] = $code;

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


Bon en gros une fois qu'on a codé un captcha acceptable, à moins qu'on reçoive la visite d'une paire de bots, on y reviens plus vraiment. Je sais que le mien par a l'avantage d'être bien lisible pour un humain mais le défaut qu'un programme pourrait éventuellement "facilement" détourer les lettres et les analyser étant donné que la couleur de slettres est presque forcément différente de celle du fond. Comme j'utilise en plus des polices génériques...
Mais comme je l'ai dit : tant qu'on est pas embêté par des bots, autant ne pas recoder un captcha tous les 4 matins...

Edit : d'ailleurs en fait mes lignes du fond ne servent à rien puisqu'elles ne sont pas de la même couleur que les lettres :p, c'est juste plus chiant à lire en fait :D
Édité le 25/07/2007 à 03:31:28 par Vizigr0u

Image utilisateur


Une équipe, 4 membres, un projet : Project: HGF
www.fooo.fr
projet d'étudiants de l'EPITA
 
Hors ligne wonerz # Posté le 25/07/2007 à 03:54:52
Avatar
Groupe : Membres
Voilà mon premier code qui date d'aujourd'hui:
Code : PHP
<?php
//On crée la session avant tout
session_start();

header ("Content-type: image/png");

 ############################
### CREATION IMG ALEATOIRE ###
 ############################
 
$image = imagecreate(200,50);

//taux RVB aléatoires
$R=mt_rand(0,255);
$V=mt_rand(0,255);
$B=mt_rand(0,255);

//couleur des caracteres (négatif par rapport au fond)
$R_n=255-$R;
$V_n=255-$V;
$B_n=255-$B;

//génération d'un code aléatoire
$alph=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','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','1','2','3','4','5','6','7','8','9');
$code='';
while( strlen($code) < 7 )
{
   $code .= $alph[mt_rand(0, 60)];
}

//génération de coordonnées aléatoires
$x=mt_rand(0,140); #horizontalement
$y=mt_rand(0,35)#verticalement

//Application
$couleur = imagecolorallocate($image, $R, $V, $B); #couleur du fond
$couleur_n = imagecolorallocate($image, $R_n, $V_n, $B_n); #couleur du code
ImageLine ($image, mt_rand(0, 140), mt_rand(0, 35), mt_rand(0, 140), mt_rand(0, 35), $couleur_n); //1er trait
ImageLine ($image, mt_rand(0, 140), mt_rand(0, 35), mt_rand(0, 140), mt_rand(0, 35), $couleur_n); //2eme trait
ImageLine ($image, mt_rand(0, 140), mt_rand(0, 35), mt_rand(0, 140), mt_rand(0, 35), $couleur_n); //3eme trait
ImageLine ($image, mt_rand(0, 140), mt_rand(0, 35), mt_rand(0, 140), mt_rand(0, 35), $couleur_n); //4eme trait
imagestring($image, 4, $x, $y, $code, $couleur_n); #Code de l'image

 #########################
### FUSION AVEC UN FOND ###
 #########################
 
//Chargement des images
$source = imagecreatefromgif("fond".mt_rand(1,4).".gif");
$destination = $image;

//Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
$largeur_source = imagesx($source);
$hauteur_source = imagesy($source);
$largeur_destination = imagesx($destination);
$hauteur_destination = imagesy($destination);

//Calcul du placement de la source dans la destination
$destination_x = $largeur_destination - $largeur_source;
$destination_y = $hauteur_destination - $hauteur_source;

//Application
imagecopymerge($destination, $source, $destination_x, $destination_y, 0, 0, $largeur_source, $hauteur_source, 60);

//Affichage
imagepng($destination);

 #######################
### PLACEMENT DU CODE ###
 #######################
 
$_SESSION['code_img'] = $code;
?>

Resultats:Image utilisateurImage utilisateurImage utilisateur...
Me manque juste une police quand même..
Hors ligne ilys # Posté le 25/07/2007 à 12:44:41
Vive le Rock, Linux, et le SDZ
Avatar
Groupe : Membres
Ils sont super beau vos captchas vraiment.
J'aime bien le tient vizigrou.
Le tient aussi n'es pas mal du tout wonerz, mais sa serais mieu si les caractères se trouvais au milieux de l'image, sinon les motifs à gauche ne serverait pas à grand chose.

Citation : Vizigr0u

Bon en gros une fois qu'on a codé un captcha acceptable, à moins qu'on reçoive la visite d'une paire de bots, on y reviens plus vraiment.

Comme je l'ai dis, ce post est plus une galerie de création de captchas, ce n'es pas forcément une arsenal de défense que nous sommes en train de montrer.
Et comme tu l'as dis on ne s'amuse pas à codé un captcha tous les jours.
C'est justement la raison pour laquelle j'ai mentionné le mot défis.
Et des défis sur le SDZ sa peut être ou bien un labyrinthe à construire et à le solutionner, ou trouver un algorytme pour solutionné un sudoku.
Cela ne sert pas à grand chose, mais sa nous permet de nous exercer et de nous échanger des idées sur la façon de consevoir de tels algorhytme.
Et voilà à vous maintenant de nous génerer vos plus beau captchas ;)

Fait par Tn. :soleil:
>>>>>>Mon tuto sur la Recherche séquentielle et dichotomique
>>>>>>Mon topic sur les images anti-bots
Venez signer la PETITION ANTI-CENSURE
 
Hors ligne KenKiller # Posté le 07/08/2007 à 18:52:06
Avatar
Groupe : Membres
Comment on peut récupéré le code dans l'image dans le captcha de tnsaad ??

J'ai cherché, mais je n'ai pas trouvé...

ODOS STAFF #3


-Va ranger ta chambre ! :colere2:
-NAN ! :diable:

-sudo va ranger ta chambre :colere:
-bon d'accord... :honte:
 
Hors ligne ilys # Posté le 07/08/2007 à 19:03:16
Vive le Rock, Linux, et le SDZ
Avatar
Groupe : Membres
Ben ta qu'a copier et coller le code que j'ai donné dans un fichier *.php, telecharger la police de caractère et la mettre dans le meme emplacement que ton fichier php, et lancer le fichier grâce à easyphp ou a wamp.
Après que tu ai exécuter ton fichier, cela génère une image captcha.png,
qui se situe dans le même emplacement de la police de caractère et du fichier php.
Une fois que tu ai réussie tout ça dis le moi je te montrerais comment l'installer sur ton site ;)

Fait par Tn. :soleil:
>>>>>>Mon tuto sur la Recherche séquentielle et dichotomique
>>>>>>Mon topic sur les images anti-bots
Venez signer la PETITION ANTI-CENSURE
 
Hors ligne KenKiller # Posté le 07/08/2007 à 19:05:35
Avatar
Groupe : Membres
sa y est j'ai fais tout ça, l'image est généré et affiché

ODOS STAFF #3


-Va ranger ta chambre ! :colere2:
-NAN ! :diable:

-sudo va ranger ta chambre :colere:
-bon d'accord... :honte:
 
Hors ligne ilys # Posté le 07/08/2007 à 19:53:00
Vive le Rock, Linux, et le SDZ
Avatar
Groupe : Membres
Ok
Alors maintenant tu upload la police de caractère sur ton site, et au lieu du code en haut tu crée un fichier nomé crypt.php où tu met ceci :
Code : PHP
<?php
session_start(); // Créér la session



//***********************
//**Création de l'image**
//***********************
       
        //Je définie d'abord la taille de l'image
$width=110;
$height=40;
        //Ensuite je l'a crée
$image=imagecreatetruecolor($width,$height);
        //L'image de font avec la couleur $couleur1
$couleur1  = imagecolorallocate($image, $rouge=rand(0,255), $vert=rand(0,255), $bleu=rand(0,255));
imagefill($image,0,0,$couleur1);

//***************************
//**Création des caractères**
//***************************

        //Ensuite vient la couleur des caractères $couleur2 qui est fonction de $couleur1
$couleur2= imagecolorallocate($image,255-$rouge,255-$vert,255-$bleu);
        //Mon script génere à chaque fois un nombre de caractere
$nbr_caractere=rand(5,7);
        //Chaque caractère auras une taille à lui en 14 et 18 point
$taille_char_min=14;
$taille_char_max=18;
        //Ca se sont les caractères autorisés. J'ai enlevé I, J, O, Q, S, U, V, 0, 1 et ce pour leur faible lisibilitée
$char_autorise = 'ABCDEFGHKLMNPRTWXYZ234569';
        //La distance entre le bord et le premier caractère
$x = 4;
        //L'espace entre les caractères
$inter_space = 18;

//*************************************
//**Boucle d'affichage des caractères**
//*************************************
$i=0;
$code=NULL;
while($i<$nbr_caractere)
        {
        //A chaque caractère ses paramètres propre à lui
        $caractere_setting[$i]['caractere']=$char_autorise{rand(0,strlen($char_autorise)-1)};
        $caractere_setting[$i]['taille']=rand($taille_char_min, $taille_char_max);
        $caractere_setting[$i]['angle']=rand(-20,20);
        //Et voilà la fonction que j'utilise : "imagettftext" que j'ai bien cherché et qui est plus adapté pour ce job que "imagestring".
        imagettftext($image,$caractere_setting[$i]['taille'],$caractere_setting[$i]['angle'],$x,30,$couleur2,'ELECHA.TTF',$caractere_setting[$i]['caractere']);
        $x+=$inter_space;
                $code .=$caractere_setting[$i]['caractere'];
        $i++;
        }
//********************************************************
//**Sauvergarde de l'image dans le fichier "captcha.png"**
//********************************************************
$_SESSION['code']=$code;

header('Content-type: image/png');      // On définit le type de fichier
header('Cache-Control: no-store, no-cache, must-revalidate');   // L'image ne doit pas être enregistrée dans le cache, puisqu'elle va être changée à chaque fois. Une très belle astuce que j'ai trouvé sur un tuto
imagepng($image);
imageDestroy($image); // Détruire l'image
?>


Ce n'est pas finie,
il faut que tu mette ceci dans la page où tu veux que l'image soit affiché:
Code : PHP
<?php
session_start();
//Il est impératif que tu commence ta page avec session_start et ne metre rien avant sinon sa marche pas.
?>

<!--Tu met içi tout ton HTML, ton javascript, ton php toute ta page quoi-->


<?php
//tu met ce code là où tu test si la valeur de ton captcha est bien celle entrer par l'utilisateur. Le nom de l'input où l'utilisateur écris le code doit s'appeller "code_verif"
if($_POST['code_verif']==$_SESSION['code'])
{
echo '<p>Votre code est juste'
}
else
{
echo '<p>Votre code est faux'
}
?>

<!--Tu met ça là où tu veut afficher ton image. Bien sûr faut que ce soit entre des balises form, et que tu prévois un bouton submit pour l'envoie-->
<img src="crypt.php" /><input type="text" name="code_verif" />


<!--Ici si tu continue à mettre se que tu veux -->

Fait par Tn. :soleil:
>>>>>>Mon tuto sur la Recherche séquentielle et dichotomique
>>>>>>Mon topic sur les images anti-bots
Venez signer la PETITION ANTI-CENSURE
 
Hors ligne salegoss # Posté le 07/08/2007 à 19:54:41
Do your work. Don't be stupid.
Avatar
Groupe : Membres
cool ce topic :)
je vais tenter d'en faire un, enfin moi et GD on s'aime pas trop même si j'ai déjà fait quelques trucs avec, ça va être marrant :p
enfin, de quoi occuper ma soirée... ^^

Attention, ce post est soumis à un copyright, toute copie ou citation abusive sera sévèrement punie.
 
Hors ligne ilys # Posté le 07/08/2007 à 20:09:14
Vive le Rock, Linux, et le SDZ
Avatar
Groupe : Membres
Nous attendons ton captchas avec impatience salegoss.
Si vous pouviez créé des captchas qui soit testable en local sa serais le top, sans session ni rien.
Merci

Fait par Tn. :soleil:
>>>>>>Mon tuto sur la Recherche séquentielle et dichotomique
>>>>>>Mon topic sur les images anti-bots
Venez signer la PETITION ANTI-CENSURE
 
Hors ligne KenKiller # Posté le 07/08/2007 à 20:22:09
Avatar
Groupe : Membres
ok merci beaucoup pour ton aide !

Si j'ai un autre problème, je reviens poster ici

@++

ODOS STAFF #3


-Va ranger ta chambre ! :colere2:
-NAN ! :diable:

-sudo va ranger ta chambre :colere:
-bon d'accord... :honte:
 
Hors ligne ilys # Posté le 07/08/2007 à 20:50:55
Vive le Rock, Linux, et le SDZ
Avatar
Groupe : Membres
J'ai fais un autre captcha dont je vous fait part :
Code : PHP
<?php
//***********************
//**Création de l'image**
//***********************
       
        //Je définie d'abord la taille de l'image
$width=100;
$height=30;
        //Ensuite je l'a crée
$image=imagecreatetruecolor($width,$height);
        //L'image de font avec la couleur $couleur1
$couleur1  = imagecolorallocate($image,255,255,255);
imagefill($image,0,0,$couleur1);

//***************************
//**Création des caractères**
//***************************
        //Mon script génere à chaque fois un nombre de caractere (4)
$nbr_caractere=4;
        //Chaque caractère auras une taille à lui en 14 et 18 point
$taille_char_min=14;
$taille_char_max=18;
        //Ca se sont les caractères autorisés. J'ai enlevé I, J, O, Q, S, U, V, 0, 1 et ce pour leur faible lisibilitée
$char_autorise = 'ABCDEFGHKLMNPRTWXYZ234569';
        //La distance entre le bord et le premier caractère
$x = 4;
        //L'espace entre les caractères
$inter_space = 25;

//*************************************
//**Boucle d'affichage des caractères**
//*************************************
$i=0;
while($i<$nbr_caractere)
        {
        //A chaque caractère ses paramètres propre à lui
        $caractere_setting[$i]['caractere']=$char_autorise{rand(0,strlen($char_autorise)-1)};
        $caractere_setting[$i]['taille']=rand($taille_char_min, $taille_char_max);
        $caractere_setting[$i]['angle']=rand(-25,20);
        $caractere_setting[$i]['couleur']=imagecolorallocate($image,$rouge=rand(0,255), $vert=rand(0,255), $bleu=rand(0,255));
        //lignes "verticales" sur le fond
                $couleur_ligne = imagecolorallocate($image,$rouge,$vert,$bleu);
                imageline($image, mt_rand($x, $width), 0, mt_rand(0, $width), $height, $couleur_ligne);
        //Et voilà la fonction que j'utilise : "imagettftext" que j'ai bien cherché et qui est plus adapté pour ce job que "imagestring".
        imagettftext($image,$caractere_setting[$i]['taille'],$caractere_setting[$i]['angle'],$x,24,$caractere_setting[$i]['couleur'],'comic.TTF',$caractere_setting[$i]['caractere']);
        $x+=$inter_space;
        $code .=$caractere_setting[$i]['caractere'];
        $i++;
        }

imagecolortransparent($image, $couleur1);             // On rend le fond blanc transparent
//********************************************************
//**Sauvergarde de l'image dans le fichier "captcha.png"**
//********************************************************
imagepng($image, "captcha.png");
?>

Il a le mérite d'être transparent donc peut se fondre dans n'importe quelle décors.
Il génère des images de ce genre Image utilisateur
Vous devez disposez de la police de caractère comic.ttf disponible ici

Fait par Tn. :soleil:
>>>>>>Mon tuto sur la Recherche séquentielle et dichotomique
>>>>>>Mon topic sur les images anti-bots
Venez signer la PETITION ANTI-CENSURE
 
Hors ligne salegoss # Posté le 07/08/2007 à 21:30:10
Do your work. Don't be stupid.
Avatar
Groupe : Membres
Bon voila je poste mon code, rien de très original, je précise juste qu'il ne fait que générer l'image, sans enregistrer le code ou quoi que ce soit (en fait j'ai la flemme :p )
Code : PHP
<?php
header ("Content-type: image/png");
$largeur = 90;
$hauteur = 40;
$image = imagecreate($largeur,$hauteur);
$couleur  = imagecolorallocate($image, $rouge=rand(0,255), $vert=rand(0,255), $bleu=rand(0,255));
$i = 0;
$ecart = 10;
$nbr_caractere = rand(5,7);
$nombrehasard = rand(2,10);

while ($i<$nbr_caractere)
{
$nombre = rand(0,9);
$hauteurnombre = rand(0,25);
$couleur_texte = imagecolorallocate($image, rand(0,255), rand(0,255), rand(0,255));
imagestring($image, 5, $ecart, $hauteurnombre, $nombre, $couleur_texte);
$i++;
$ecart = $ecart + 10;
}

while ($nombretraits<$nombrehasard)
{
$couleur_traits = imagecolorallocate($image, rand(0,255), rand(0,255), rand(0,255));
ImageLine ($image, mt_rand(0, 90), mt_rand(0, 40), mt_rand(0, 90), mt_rand(0, 40), $couleur_traits);
$nombretraits++;
}
imagecolortransparent($image, $couleur);
imagepng($image);
?>


ce qui donne:
Image utilisateur (rechargez la page si vous voulez la changer ^^ où cliquez ici c'est plus rapide )
Édité le 07/08/2007 à 21:32:06 par salegoss

Attention, ce post est soumis à un copyright, toute copie ou citation abusive sera sévèrement punie.
 
Hors ligne ilys # Posté le 07/08/2007 à 21:52:51
Vive le Rock, Linux, et le SDZ
Avatar
Groupe : Membres
C'est un très beau début.
Mais je pense qu'un captcha avec des nombres n'est pas suffisant.
En incluant des lettres, et en jouant sur leurs inclinaisons sa serait parfait.
@+

Fait par Tn. :soleil:
>>>>>>Mon tuto sur la Recherche séquentielle et dichotomique
>>>>>>Mon topic sur les images anti-bots
Venez signer la PETITION ANTI-CENSURE
 
Hors ligne Jeremie64 # Posté le 07/08/2007 à 21:58:07
Get over it !
Avatar
Groupe : Membres
Voir pages 16, nouvelle version !
Édité le 16/03/2008 à 05:46:32 par Jeremie64

Coding is more than a job, more than hobby, more than activity, it's a lifestyle !

PHP is a powerful programming language, if you know how to use it...

 
Hors ligne ilys # Posté le 07/08/2007 à 22:03:28
Vive le Rock, Linux, et le SDZ
Avatar
Groupe : Membres
Je te l'ai déjà dis une fois ton captcha est très beau
Je me permet d'ajouter l'image qu'il génère car il se peut que tu change ton lien donc le voilà ton captcha:
Image utilisateur
Encore bravo

Fait par Tn. :soleil:
>>>>>>Mon tuto sur la Recherche séquentielle et dichotomique
>>>>>>Mon topic sur les images anti-bots
Venez signer la PETITION ANTI-CENSURE
 
Hors ligne Jeremie64 # Posté le 07/08/2007 à 22:04:39
Get over it !
Avatar
Groupe : Membres
J'avais pas le gout de prendre une image, :D

Mais tu l'as fais alors, profitons-en!!
Édité le 07/08/2007 à 22:05:11 par Jeremie64

Coding is more than a job, more than hobby, more than activity, it's a lifestyle !

PHP is a powerful programming language, if you know how to use it...

 
Hors ligne anonyme # Posté le 07/08/2007 à 22:29:44
Groupe :
Le meilleur captcha qu'on peut réaliser sans se casser la tête ET sûrtout éxécutant le code source beaucoup plus rapidement ...

Code : Autre
Si vous êtes humain, quel est le résultat de 5 + 9 ? ... 14 !


... :p
Hors ligne Jeremie64 # Posté le 07/08/2007 à 22:47:46
Get over it !
Avatar
Groupe : Membres
J'ai troujours trouvé que l'image faisait plus pro.

De plus, les robot peut toujours lire ça...

Coding is more than a job, more than hobby, more than activity, it's a lifestyle !

PHP is a powerful programming language, if you know how to use it...

 
Hors ligne anonyme # Posté le 07/08/2007 à 22:59:42
Groupe :
Citation : OctetsMotion
J'ai troujours trouvé que l'image faisait plus pro.

De plus, les robot peut toujours lire ça...


Bon, quand tu auras des sites tels que Microsoft.com ou Fnac.com (sans faire de la pub :-° ) tu utilisera peut être ces moyens ou plus avancés peut être, mais danc le cas où on se trouve, je crois cela peut être suffisant sans autant alourdir le code source. Chacun à sa façon de le faire après tout ^^ .
Hors ligne salegoss # Posté le 07/08/2007 à 23:16:48
Do your work. Don't be stupid.
Avatar
Groupe : Membres
tnsaad j'avais la flemme de mettre des lettres, surtout que je ne m'en servirais jamais...
par contre pour l'inclinaison, j'ai essayé mais pas réussi :p

Attention, ce post est soumis à un copyright, toute copie ou citation abusive sera sévèrement punie.
 
Hors ligne Jeremie64 # Posté le 07/08/2007 à 23:17:13
Get over it !
Avatar
Groupe : Membres
Je suis d'accord avec toi sur ce point.

:)
Édité le 07/08/2007 à 23:17:35 par Jeremie64

Coding is more than a job, more than hobby, more than activity, it's a lifestyle !

PHP is a powerful programming language, if you know how to use it...

 
Hors ligne ilys # Posté le 07/08/2007 à 23:22:42
Vive le Rock, Linux, et le SDZ
Avatar
Groupe : Membres
Citation : x86programmer
Le meilleur captcha qu'on peut réaliser sans se casser la tête ET sûrtout éxécutant le code source beaucoup plus rapidement ...

Code : Autre
Si vous êtes humain, quel est le résultat de 5 + 9 ? ... 14 !


... :p
Je ne pense pas que se soit un très bon captchas.
Je te fait tout de suite le code que pourrait utiliser un bot pour trouver le résultat et l'afficher surtout que tout se trouve en claire dans le code source de la page.
Il n'a qu'à lire le premier chiffre qui est exactement le nième caractère de la ligne, puis le second qui est le nième+4 caractère, faire leurs somme, et remplir ton formulaire.
Et si on se casse la tête à faire des trucs que seuls les humains peuvent lire, c'est qu'il y a des bots capables de scanner le captcha, et lui faire une reconnaissance des caractères des plus pointus.
Donc je ne pense pas qu'un bots aussi performant puisse être captcher par un truc aussi débil qu'est ton truc...

Fait par Tn. :soleil:
>>>>>>Mon tuto sur la Recherche séquentielle et dichotomique
>>>>>>Mon topic sur les images anti-bots
Venez signer la PETITION ANTI-CENSURE
 
Hors ligne anonymousguest # Posté le 07/08/2007 à 23:35:12
I'm the Dude
Avatar
Groupe : Membres
La solution sans images a le mérite d'être accessible ;) . Et puis, avec des questions de différents types contenant des éléments aléatoires, on peut compliquer les choses pour un programme en gardant la facilité pour les humains. De toutes façons, il existe des programmes de reconnaissance de caractères pour déjouer les captchas en images plus évolués que ceux vus jusqu'ici (exemple).

EDIT : meilleur exemple de l'efficacité des OCR : http://ocr-research.org.ua/list.html
Édité le 07/08/2007 à 23:38:19 par anonymousguest

Bibles : PHP - MySQL - REGEX - REGEX² - XHTML - CSS
Pas bible : gestion des erreurs
 
Hors ligne anonyme # Posté le 07/08/2007 à 23:36:31
Groupe :
Citation : tnsaad
Citation : x86programmer
Le meilleur captcha qu'on peut réaliser sans se casser la tête ET sûrtout éxécutant le code source beaucoup plus rapidement ...

Code : Autre
Si vous êtes humain, quel est le résultat de 5 + 9 ? ... 14 !


... :p
Je ne pense pas que se soit un très bon captchas.
Je te fait tout de suite le code que pourrait utiliser un bot pour trouver le résultat et l'afficher surtout que tout se trouve en claire dans le code source de la page.
Il n'a qu'à lire le premier chiffre qui est exactement le nième caractère de la ligne, puis le second qui est le nième+4 caractère, faire leurs somme, et remplir ton formulaire.
Et si on se casse la tête à faire des trucs que seuls les humains peuvent lire, c'est qu'il y a des bots capables de scanner le captcha, et lui faire une reconnaissance des caractères des plus pointus.
Donc je ne pense pas qu'un bots aussi performant puisse être captcher par un truc aussi débil qu'est ton truc...


OK ^^ . C'est vrai, on pourrait très vite faire un bot qui détecterait les 2 chiffres en les additionnant. Mais pour que le hackeur se compliquent un peu la vie on pourrait faire d'autres signes aléatoirement (+, -, /, *). Oui, encore une fois la hacker n'aurait pas trop de mal. Cependant je parlais pour un site pas très connu, comme un site personnel quoi. C'est vrai que cela ne concernait pas un site tel que le SiteDuZero et encore moins Microsoft ^^

Alors si le bot sait faire des addtions, pourquoi ne pas utiliser des mots/questions ? :-° Je peux te dire que tu vas beaucoup travailler là :p Questions classiques : J'ai combien de bras ?, J'ai combien de têtes ? ...

Normalement la personne sera répondre à moins qu'il soit... un bot ! :lol:
Hors ligne Jeremie64 # Posté le 07/08/2007 à 23:39:11
Get over it !
Avatar
Groupe : Membres
Tu peux toujours mettre tes addtions dans une image, si le robot la décode, ça ne donnera pas le résultat!

Coding is more than a job, more than hobby, more than activity, it's a lifestyle !

PHP is a powerful programming language, if you know how to use it...

 
Hors ligne ilys # Posté le 07/08/2007 à 23:44:59
Vive le Rock, Linux, et le SDZ
Avatar
Groupe : Membres
C'est vrai que question accessibilité ce n'est pas au top, mais il existe aussi des solution pour remédier à celà comme des fichiers son ou le contact de l'administrateur quand on est malvoyant ou qqchose comme ça.
Mais je reste sur ma position que c'est la meilleur façon de protéger du spam(Après la solution de s'inscrir dans le site bien sûr).
Et les solutions genre je met un input en hidden ou que je met la somme de nombres à calculer me paraissent trop et je dit bien trop facile à calculer.
Un gamin de 6ans pourrais le faire.
Mais on est pas là pour débattre sur les failles de tous les système, nous sommes là pour créé une galerie de captchas,, et comme je l'ai dis et redis, c'est plus l'aspect pédagogique que peut avoir la création de captchas sur nous qui m'intéresse.


PS : anonymousguest je suis ton plus grand fan surtout après le truc sur le FullText mais bon hors sujet :lol:
Édité le 07/08/2007 à 23:47:07 par ilys

Fait par Tn. :soleil:
>>>>>>Mon tuto sur la Recherche séquentielle et dichotomique
>>>>>>Mon topic sur les images anti-bots
Venez signer la PETITION ANTI-CENSURE
 
Hors ligne anonyme # Posté le 08/08/2007 à 00:02:42
Groupe :
Citation : tnsaad
[...]Et les solutions genre je met un input en hidden ou que je met la somme de nombres à calculer me paraissent trop et je dit bien trop facile à calculer.


Je crois tu confonds un peu là :o .

Page 1
Code : PHP
$nombre1 = mt_rand(2, 9);
$nombre2 = mt_rand(2, 9);
$resultat = $nombre1 + $nombre2;
$_SESSION['resultat'] = $resultat;
echo "Combien ferait {$nombre1} + {$nombre2} ?"; ...<input type="text" name="resultat" />...


Page 2
Code : PHP
if (isset($_SESSION['resultat']) && isset($_POST['resultat'])) {
if (