Aller au menu - Aller au contenu

[Galerie] Réalisation de CAPTCHAs

On veut les votres

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page Précédente  1  2  3  4  5  ...  41  42  43  44  Suivante
Auteur Message
1 visiteur sur ce sujet (1 Anonyme)
Page Précédente  1  2  3  4  5  ...  41  42  43  44  Suivante
Hors ligne Anonyme # Posté le 08/08/2007 à 00:30:03

Reprise du dernier message de la page précédente :
Citation : tnsaad
[...] Si c'est un bot qui remplie les champs, il remplieras celui de type hidden, et si ce champ est remplie celà veut dire que c'est un robot.
Tu la connaissait pas celle là hein??? :p .


Non, mais toi non plus je crois :p Car elle à été présentée il y a 2 - 3 jours de cela sur le SdZ, je ne me rappelle plus qui c'était mais pas toi en tout cas :lol: (humour)

Citation : tnsaad
x86programmer si tu a un captcha à proposer tu es le bienvenue, sinon Image utilisateur (je rigole tu es bien sûr le bienvenue dans tous les cas :D )


Elle était bonne celle-là ^^ C'est vrai, je crois que j'ai un peu beaucoup parlé ce soir, à cause de la fatigue peut-être :-° Bonn, je vous laisse pour de bon, vous ne voulez pas renoncer o_O ( ;) ).
Hors ligne ilys # Posté le 08/08/2007 à 00:39:07
Vive le Rock, Linux, et le SDZ
Avatar

Ville : Fès
Pays : Maroc
études : ENSAF

J'ai vu "le pas toi en tout cas " écrit en blanc :colere: .
Je vois que monsieur est un fin connaisseur des truc qui se passe sur le sdz. Et oui je la connaissais pas moi aussi avant 2-3 jour de celà mais bon je la connais tu la connais c'est super.
Mais j'ai une question :
C'est quand qu'on commence à créé ces */$^!!?;_\ de CAPTCHAS
Ils sont où mes pillules anti-stress sinon je vais tué quelqu'un, et trouvez le coupable
Moi aussi je pense que je commence à être fatigué, je revient demain pour voir si il y a d'autre captcha à pêcher :D
Édité le 08/08/2007 à 00:40:13 par ilys

Fait par Tn. :soleil:
>>>>>>Mon tuto sur la Recherche séquentielle et dichotomique
>>>>>>Mon topic sur les images anti-bots
 
Hors ligne Blackhole # Posté le 08/08/2007 à 18:40:55
Bear, and forbear
Avatar

Bonjour à tous ^^ !
J'avais justement besoin de faire un Captcha pour mon site. Alors voilà ^^ Notez que j'ai essayé de faire dans l'efficacité ( en me réferrant à cette page ) plutôt que dans la beauté, mais c'est pas mal quand même :p !

Une image de ma premire version :

Captcha 1

Les arcs de cercle sont aléatoire, les couleurs aussi, mais sont toujours opposé à l'arrière plan pour que ce soit lisible. Rotation des lettres, présence de caractères non-alphanumériques, épaisseur des caractères variables, police utilisé variable aussi ( là, j'avais mis que Arial et Times New Roman, mais on peut mettre toutes celles que l'on veut ) ...etc... Je pense que ca devrait suffire mon petit site personnel, non ^^ ?!
Seul bémol, il arrive que certaines lettres disparaissent - tout ou en parti - masquer par le carré des autres ( qui n'est pas transparent mais de la couleur du fond ).

Aussi ai-je tester de rendre transparent le fond des lettres, mais ca pixellise tout :

Captcha 2

( encore là, c'est pas trop pixellisé ) . On peut donc décider de mettre en évidence les contours ( mais la couleur du fond est tout le temps la même désormais, à savoir Gris 50% ) ...

Captcha 3

... ou bien d'appliquer un flou gaussien sur les lettres, mais justement, c'est flou et je trouve que ca fait mal aux yeux ^^ !

Captcha 4

Voilà, c'est tout pour le moment ! Niveau beauté, y'a pas à chercher, je préfère de loin la troisième, mais niveau efficacité ... ca reste à voir ^^ !

( P-S. : J'aurais bien aimé faire varier aléatoirement l'épaisseur des arcs de cercles, mais imageSetThickness n'a pas l'air d'avoir envie de marcher aujourd'hui ... )

Forum PHP au vert !

- Le moteur de templates le plus rapide, le plus pratique et le plus effiace ? Par ici !
 
Hors ligne ilys # Posté le 08/08/2007 à 18:58:53
Vive le Rock, Linux, et le SDZ
Avatar

Ville : Fès
Pays : Maroc
études : ENSAF

Si tu postais ton code ici ça serai super.
Tout le monde pourrait en profiter

Fait par Tn. :soleil:
>>>>>>Mon tuto sur la Recherche séquentielle et dichotomique
>>>>>>Mon topic sur les images anti-bots
 
Hors ligne Moxostoma # Posté le 09/08/2007 à 03:11:14
Green Day :)
Avatar

Ville : Cendras
Pays : France métropolitaine

Bonjour, j'ai un problème avec mon captcha...
j'ai voulus modifiez à ma façon avec un exemple page 1 mais celà ne marche pas. :(

Voici mon code, merci :D

Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. session_start(); // Créér la session
  3.  
  4. //***********************
  5. //**Création de l'image**
  6. //***********************
  7.  
  8. $largeur=144;
  9. $longueur=50;
  10.  
  11. $img=imagecreatetruecolor($largeur,$longueur);
  12. $couleur = imagecolorallocate($img, 51,204,255);
  13.  
  14. //***************************
  15. //**Création des caractères**
  16. //***************************
  17.  
  18. $nombre_de_caractere=6;
  19. $caractere = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789abcdefghijklmnopqrstuvwxyz';
  20. $police = array('arial.ttf');
  21. $bord = 3;
  22. $espace = 10;
  23.  
  24.  
  25. //*************************************
  26. //**Boucle d'affichage des caractères**
  27. //*************************************
  28. for($i = 0; $i < 6; $i++)
  29. {
  30. $ligne = imagecolorallocate($img mt_rand(204,204,102), mt_rand(51,153,51), mt_rand(204,0,0), mt_rand(0,153,153), mt_rand(102,0,0), mt_rand(0,0,0), mt_rand(255,255,255), mt_rand(255,51,153)); //sy ya problème
  31. imageline($img, 0, mt_rand(0, $longueur), $largeur, mt_rand(0, $longueur), $ligne);
  32. }
  33. for($i = 0; $i < 6; $i++)
  34. {
  35. $ligne = imagecolorallocate($img mt_rand(204,204,102), mt_rand(51,153,51), mt_rand(204,0,0), mt_rand(0,153,153), mt_rand(102,0,0), mt_rand(0,0,0), mt_rand(255,255,255), mt_rand(255,51,153)); //sy ya problème
  36. imageline($img, 0, mt_rand(0, $longueur), $largeur, mt_rand(0, $longueur), $ligne);
  37.  
  38. //*************************************
  39. //**Autres**
  40. //*************************************
  41. $x = mt_rand(2,20);
  42. for($i = 0; $i < $nombre_de_caractere; $i++)
  43. {
  44. $code_ajouter = $codes[mt_rand(0,$longueur-1)];
  45. $lettres .=  $code_ajouter;
  46. $bordure = mt_rand(-25, 20);
  47. $taille = mt_rand(25,35);
  48. $taille_longueur = ($longueur / 2) + ($taille/2);
  49. $couleur_texte = imagecolorallocate($img mt_rand(204,204,102), mt_rand(51,153,51), mt_rand(204,0,0), mt_rand(0,153,153), mt_rand(102,0,0), mt_rand(0,0,0), mt_rand(255,255,255), mt_rand(255,51,153));
  50. imagettftext($img, $taille, $bordure, $x, $taille_longueur, $couleur_texte, $realpath($police[array_rand($police)]), $code_ajouter);
  51. x += 1.2 * $taille + mt_rand(0,2);
  52.  
  53. $_SESSION['mycode'] = $mycode;
  54. header('Content-type: image/png');
  55. imagepng($image);
  56. imagedestroy($image);
  57. ?>


Par avance merci ;)
Édité le 09/08/2007 à 03:17:29 par Moxostoma
Hors ligne Jeremie64 # Posté le 09/08/2007 à 04:24:19
Get over it !
Avatar

$mycode n'est pas définie.

LOL

Bye

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 sbeex # Posté le 09/08/2007 à 09:37:18
Avatar

études : EPFL

Bonjour,
excusez-moi mais je vois des truc qui m'intriguent...
Depuis quand les bots s'amusent-t-ils à décrypter les lettres placés sur les captchas ?
De plus, chaque captcha est différent ! (Autre url d'image selon les sites, autre extension parfois etc.)
Je crois qu'il ne faut pas jouer aux fous non plus.
Vos traits pardessus les lettre (ou dessous) je ne comprend pas du tout l'utilité ça rend la lecture plus complexe et niveau estétique chacuns ces gouts...

Alors si ce que j'ai dit plus haut est faux, je suis ouvert à la discussion.

Image utilisateur
Image utilisateur
 
Hors ligne Blackhole # Posté le 09/08/2007 à 09:54:53
Bear, and forbear
Avatar

Depuis quand les bots s'amusent-t-ils à décrypter les lettres placés sur les captchas ?
Depuis que le spam et les emmerdeurs ( désolé pour le mot, mais c'est bien ca ) existents !

Je te renvoie au message suivant : http://www.siteduzero.com/forum-83-170810-1605489.html#r1605489

Forum PHP au vert !

- Le moteur de templates le plus rapide, le plus pratique et le plus effiace ? Par ici !
 
Hors ligne jaye # Posté le 09/08/2007 à 11:04:20
Avatar

allez hop un ptit catpcha realisé vite fait pour l'occase :

EDIT : version 2 !

Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. //la chaine de texte
  3. $text="AbcD56";
  4.  
  5. //image vide
  6. $image=imagecreatetruecolor(300,100);
  7.  
  8. // definition des couleurs
  9. $bleu=imagecolorallocate($image, 31, 31, 201);
  10. $rouge=imagecolorallocate($image, 201, 31, 31);
  11. $vert=imagecolorallocate($image, 31, 151, 31);
  12. $blanc=imagecolorallocate($image, 200, 200, 200);
  13.  
  14. //les memes avec un peu de transparence
  15. $bleualpha=imagecolorallocatealpha($image, 31, 31, 201, 80);
  16. $rougealpha=imagecolorallocatealpha($image, 201, 21, 21, 50);
  17. $vertalpha=imagecolorallocatealpha($image, 31, 201, 31, 50);
  18. $blancalpha=imagecolorallocatealpha($image, 220, 220, 220, 50);
  19.  
  20. //les memes avec un peu moins de transparence
  21. $bleualpha2=imagecolorallocatealpha($image, 31, 31, 241, 20);
  22. $rougealpha2=imagecolorallocatealpha($image, 201, 21, 21, 20);
  23. $vertalpha2=imagecolorallocatealpha($image, 11, 241, 61, 10);
  24. $blancalpha2=imagecolorallocatealpha($image, 220, 220, 220, 20);
  25.  
  26. //definition des motifs, notez que $motif_top utilise des couleurs avec transparence
  27. $motif_top = Array($vertalpha, $blancalpha, $rougealpha, $blancalpha, $blancalpha,  $bleualpha, $bleualpha);
  28. $motif_fond = Array($vert, $vert, $vert,$rouge, $vert, $bleu, $bleu, $vert, $blanc, $blanc, $vert, $vert);
  29.  
  30. //on remlpit l'image avec le $motif_fond
  31. imagesetstyle($image, $motif_fond);
  32. imagefill($image, 0, 0, IMG_COLOR_STYLED);
  33.  
  34. // on met les couleurs et les polices pour le texte en tableau, pour choisir aleatoirement plus tard
  35. $couleurs = array( $bleualpha2, $rougealpha2, $blancalpha2, $vertalpha2);
  36. $polices = array("gulim.ttc", "Lsansi.ttf", "palab.ttf", "BOOKOSB.TTF");
  37.  
  38. //calcul longueur du texte et espacement des caracteres
  39. $longueur=strlen($text);
  40. $pas=300/$longueur;
  41.  
  42. //on parcourt le texte caractere par caractere
  43. for ($i=0; $i<$longueur; $i++)
  44. {
  45.         $lettre=$text[$i];
  46.         //angle du caractere aleatoire
  47.         $angle=mt_rand(-30, 30);
  48.         //numero2 de couleur aleatoire, qui sera utilisé avec le tableau de couleur défini avant la boucle
  49.         $couleur1=mt_rand(0,3);
  50.         $couleur2=mt_rand(0,3);
  51.         //taille de texte aleatoire
  52.         $taille=mt_rand(40,60);
  53.         //numero de police aleatoire
  54.         $police=mt_rand(0,3);
  55.         //on definit le decalage entre les 2 caracteres
  56.         $decalage1=mt_rand(-5,5);
  57.         $decalage2=mt_rand(-5,5);
  58.         //on dessine les caracteres, avec les parametres aléatoires
  59.         imagettftext($image, $taille, $angle, $pas*$i, 80, $couleurs[$couleur1], $polices[$police], $lettre);
  60.         imagettftext($image, $taille, $angle, $pas*$i+$decalage1, 80+$decalage2, $couleurs[$couleur2], $polices[$police], $lettre);
  61. }
  62.  
  63. //on dessine un motif transparent par dessus le texte pour "brouiller" un peu plus
  64. imagesetstyle($image, $motif_top);
  65. imagefilledrectangle($image, 0, 0, 300, 100, IMG_COLOR_STYLED);
  66.  
  67. //c'est fini, on dessine l'image
  68. header("Content-type: image/png");
  69. imagepng($image);
  70.  
  71. ?>


et voici le resultat :
Image utilisateur

ca pete un peu les yeux, mais bon ca reste lisible ^^
Édité le 09/08/2007 à 17:07:38 par jaye

EasyPict pour redimensionner, optimiser, convertir en GIF PNG ou JPEG des photos et des images en ligne...

Le site consacré aux albums jeunesse et à tous ceux qui leur donnent une âme :
De papier (de soie), d'encre (de Chine) et de couleurs (si nuancées)...
 
Hors ligne ilys # Posté le 09/08/2007 à 11:12:58
Vive le Rock, Linux, et le SDZ
Avatar

Ville : Fès
Pays : Maroc
études : ENSAF

Moxostoma>>>N'ayant pas de post où tester ton code je vais juste te dire les truc qu'il faut corriger.
Pour commencer audébut tu déclare une image $img, et à la fin tu lui dis de te renvoyé une image $image !!? Ou tu adapte tout ton code avec $image ou avec $img.
Puis vient imagecolorallocate , il manque des virgules entre $img et ton mt_rand.
Une autre faute que j'ai pu voir c'est la variable x avant la fin de la dernière boucle, c'est $x pas x.
Et elle est où l'accolade fermante de ta dernière boucle??
Bon ça c'est juste ce que j'ai pu voir. Tu refais des test et tu nous tiens au courant.

Citation : sbeex
Bonjour,
excusez-moi mais je vois des truc qui m'intriguent...
Depuis quand les bots s'amusent-t-ils à décrypter les lettres placés sur les captchas ?
De plus, chaque captcha est différent ! (Autre url d'image selon les sites, autre extension parfois etc.)
Je crois qu'il ne faut pas jouer aux fous non plus.
Vos traits pardessus les lettre (ou dessous) je ne comprend pas du tout l'utilité ça rend la lecture plus complexe et niveau estétique chacuns ces gouts...

Alors si ce que j'ai dit plus haut est faux, je suis ouvert à la discussion.


>> Citation : Blackhole
Depuis quand les bots s'amusent-t-ils à décrypter les lettres placés sur les captchas ?
Depuis que le spam et les emmerdeurs ( désolé pour le mot, mais c'est bien ca ) existents !

Je te renvoie au message suivant : http://www.siteduzero.com/forum-83-170810-1605489.html#r1605489


Merci blackhole ça doit être la centième foie (j'exagère :p ) que je le répète.

>>>>>jaye: Merci de ta participation jaye ton captcha est super, mais ton code manque de commentaire. Ca serais bien si tu le commentais comme ça les zéros pourrons comprendre ce que t'as fais. ;)

Fait par Tn. :soleil:
>>>>>>Mon tuto sur la Recherche séquentielle et dichotomique
>>>>>>Mon topic sur les images anti-bots
 
Hors ligne jaye # Posté le 09/08/2007 à 11:23:43
Avatar

ok j'édite :p

EasyPict pour redimensionner, optimiser, convertir en GIF PNG ou JPEG des photos et des images en ligne...

Le site consacré aux albums jeunesse et à tous ceux qui leur donnent une âme :
De papier (de soie), d'encre (de Chine) et de couleurs (si nuancées)...
 
Hors ligne bilou89 # Posté le 09/08/2007 à 12:21:29
Avatar

Salut,

Voici le mien :

Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. /***************************************/
  3. /*** Captcha par bilou89 ***/
  4. /*** bilou89-4sang@hotmail.fr ***/
  5. /***************************************/
  6.  
  7. session_start(); // Création de la session
  8.  
  9. $largeur = 300; // Largeur de l'image
  10. $hauteur = 60; // Hauteur de l'image
  11.  
  12. // Liste des polices utilisées aléatoirement, à placer dans le dossier police/
  13. $polices = array('polices/trebuc.ttf', 'polices/tahomabd.ttf', 'polices/verdanab.ttf');
  14.  
  15. $image = imagecreatetruecolor($largeur, $hauteur); // Création de l'image
  16. $fond = imagecolorallocate($image, mt_rand(0, 150), mt_rand(0, 150), mt_rand(0, 150)); // Couleur de fond
  17. imagefill($image, 0, 0, $fond); // Coloration du fond
  18.  
  19.  
  20. /**************************************/
  21. /***  Traçage des lignes/cercles sur le fond ***/
  22. /**************************************/
  23.  
  24. // 3 lignes vertial
  25. for($i = 0; $i < 3; $i++)
  26. {
  27.         $couleur_ligne = imagecolorallocate($image, mt_rand(0, 150), mt_rand(0, 150), mt_rand(0, 150)); // Couleur de la ligne
  28.         imagesetthickness($image, mt_rand(1, 4)); // Changement de l'épaisseur de la ligne
  29.         imageline($image, 0, mt_rand(0, $hauteur), $largeur, mt_rand(0, $hauteur), $couleur_ligne); // Traçage de la ligne
  30. }
  31.  
  32. // 3 lignes horizontal
  33. for($i = 0; $i < 3; $i++)
  34. {
  35.         $couleur_ligne = imagecolorallocate($image, mt_rand(0, 150), mt_rand(0, 150), mt_rand(0, 150)); // Couleur de la ligne
  36.         imagesetthickness($image, mt_rand(1, 4)); // Changement de l'épaisseur de la ligne
  37.         imageline($image, mt_rand(0, $largeur), 0, mt_rand(0, $largeur), $hauteur, $couleur_ligne); // Traçage de la ligne
  38. }
  39.  
  40. // 3 cercles
  41. for($i = 0; $i < 3; $i++)
  42. {
  43.         $couleur_ligne = imagecolorallocate($image, mt_rand(0, 150), mt_rand(0, 150), mt_rand(0, 150)); // Couleur du cercle
  44.         imagesetthickness($image, mt_rand(1, 2)); // Changement de l'épaisseur du cercle
  45.         imageellipse($image, mt_rand(10, 290), mt_rand(10, 40), mt_rand(5, 60), mt_rand(5, 60), $couleur_ligne); //  Traçage du cercle
  46. }
  47.  
  48. imagesetthickness($image, 1); // Remise de l'épaisseur des lignes, cercles, ... à 1px
  49.  
  50. /**************************************/
  51. /*** Traçage des caractères sur le fond ***/
  52. /**************************************/
  53.  
  54. $couleur_lettres = imagecolorallocate($image, mt_rand(0, 150), mt_rand(0, 150), mt_rand(0, 150)); // Couleur des lettres de fond
  55. $nb_caracteres = 20; // Nombre de caractères citués au fond
  56. $lettres = 'abcdefghijklmnopqrstuvwxyz-+*/@$&éè'; // Caractères utilisés pour les lettres de fond
  57. $lettres_melange = strlen($lettres); // Mélange des caractèred
  58.  
  59. $x = mt_rand(5, 295); // Définition aléatoire de la position de X
  60. $y = mt_rand(5, 55); // Définition aléatoire de la position de Y
  61.  
  62. $i = 0;
  63. // Boucle pour déssiner les caractères de fond
  64. while($i < $nb_caracteres)
  65. {      
  66.         $lettre_a_ajouter = $lettres[mt_rand(0, $lettres_melange - 1)]; // Selection de la lettre à ajouter
  67.         $taille = mt_rand(12, 20); // Définition de la taille de la lettre
  68.         $angle = mt_rand(0, 180); // Définition de l'angle de la lettre
  69.        
  70.         imagettftext($image, $taille, $angle, $x ,$y, $couleur_lettres, realpath($polices[array_rand($polices)]), $lettre_a_ajouter); // Traçage de la lettre
  71.        
  72.         $x = mt_rand(5, 295); // Changement de position de X
  73.         $y = mt_rand(5, 55); // Changement de position de Y
  74.        
  75.         $i++; // Inscrémentation de 1
  76. }
  77.  
  78. /**************************************/
  79. /*** Traçage et création du code ***/
  80. /**************************************/
  81.  
  82. $nb_caracteres = 6; // Nombre de caractères
  83. $lettres = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789'; // Caractères autorisés
  84. $lettres_melange = strlen($lettres); // Mélange des caractères
  85. $code = ''; // Création de $code
  86.  
  87. $x = mt_rand(2, 20); // Définition aléatoire de X
  88. $y = ($hauteur / 2) + mt_rand(0, 10); // Definition de Y ~ au milieu de l'image
  89.  
  90. $i = 0;
  91. // Boucle pour dessiner les lettres
  92. while($i < $nb_caracteres)
  93. {
  94.         $lettre_a_ajouter = $lettres[mt_rand(0, $lettres_melange - 1)]; // Selection de la lettres
  95.         $taille = mt_rand(25,35); // Définition de la taille
  96.         $angle = mt_rand(-30, 25); // Définition de l'angle
  97.        
  98.         $code .=  $lettre_a_ajouter; // Ajout de la lettre dans $code
  99.        
  100.         $couleur_lettre = imagecolorallocate($image, mt_rand(150, 255), mt_rand(150, 255), mt_rand(150, 255)); // Selection de la couleur de la lettre
  101.        
  102.         imagettftext($image, $taille, $angle, $x, $y, $couleur_lettre, realpath($polices[array_rand($polices)]), $lettre_a_ajouter); // Traçage de la lettre
  103.    
  104.         $x += $taille + mt_rand(2, 20); // Changement de position de X
  105.         $y = ($hauteur / 2) + mt_rand(10, 15); // Petit changement de position de Y
  106.        
  107.         $i++; // Incrémentation de 1
  108. }
  109.  
  110. /**************************************/
  111. /***  Traçage des lignes/cercles sur le devant ***/
  112. /**************************************/
  113.  
  114. // 2 lignes vertial
  115. for($i = 0; $i < 2; $i++)
  116. {
  117.         $couleur_ligne = imagecolorallocate($image, mt_rand(0, 150), mt_rand(0, 150), mt_rand(0, 150)); // Couleur de la ligne
  118.         imageline($image, 0, mt_rand(0, $hauteur), $largeur, mt_rand(0, $hauteur), $couleur_ligne); // Traçage de la ligne
  119. }
  120.  
  121. // 2 lignes horizontal
  122. for($i = 0; $i < 2; $i++)
  123. {
  124.         $couleur_ligne = imagecolorallocate($image, mt_rand(0, 150), mt_rand(0, 150), mt_rand(0, 150)); // Couleur de la ligne
  125.         imageline($image, mt_rand(0, $largeur), 0, mt_rand(0, $largeur), $hauteur, $couleur_ligne); // Traçage de la ligne
  126. }
  127.  
  128. $_SESSION['code'] = $code; // Enregistrement du $code dans la session
  129.  
  130. header('Content-type: image/png'); // Déclaration de la création d'un image PNG
  131. imagepng($image); // Création de l'image
  132. ?>

Voici le résultat :
Image utilisateur

Image utilisateur

Image utilisateur

EDIT : version en N&B disponible ici
Édité le 13/09/2007 à 18:38:40 par bilou89

Image utilisateur
 
Hors ligne ilys # Posté le 09/08/2007 à 14:09:36
Vive le Rock, Linux, et le SDZ
Avatar

Ville : Fès
Pays : Maroc
études : ENSAF

Très belle démonstration bilou89, et merci pour la page de test.

Fait par Tn. :soleil:
>>>>>>Mon tuto sur la Recherche séquentielle et dichotomique
>>>>>>Mon topic sur les images anti-bots
 
Hors ligne jaye # Posté le 09/08/2007 à 14:51:53
Avatar

bon j'ai un peu amélioré mon captcha (texte doublé, taille et police aleatoire).

voir le code et l'image de démo sur mon premier message que j'ai édité ^^

bilou89, pas bete l'idée de mettre des caracteres en fond, de quoi faire perdre la tete a un OCR :)

EasyPict pour redimensionner, optimiser, convertir en GIF PNG ou JPEG des photos et des images en ligne...

Le site consacré aux albums jeunesse et à tous ceux qui leur donnent une âme :
De papier (de soie), d'encre (de Chine) et de couleurs (si nuancées)...
 
Hors ligne Moxostoma # Posté le 09/08/2007 à 16:06:15
Green Day :)
Avatar

Ville : Cendras
Pays : France métropolitaine

Bonjour, j'ai corriger toutes mes erreur, mais pour les variable de $image au lieu de $img c'était la fatigue je crois ^^
Mais , celà ne marche toujours pas :(

PHP me met une erreur :
Citation : moi
Parse error: syntax error, unexpected $end in /home/florian1/domains/zone-dinogaia.omivu.net/public_html/captcha/crypt.php on line 57


Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. imagedestroy($img);
  3. ?> //ligne 57


Est, je vous poste mon code "corriger"...

Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. session_start(); // Créér la session
  3.  
  4. //***********************
  5. //**Création de l'image**
  6. //***********************
  7.  
  8. $largeur=144;
  9. $longueur=50;
  10.  
  11. $img = imagecreatetruecolor($largeur,$longueur);
  12. $couleur = imagecolorallocate($img, 51,204,255);
  13.  
  14. //***************************
  15. //**Création des caractères**
  16. //***************************
  17.  
  18. $nombre_de_caractere=6;
  19. $caractere = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789abcdefghijklmnopqrstuvwxyz';
  20. $police = array('arial.ttf');
  21. $bord = 3;
  22. $espace = 10;
  23.  
  24.  
  25. //*************************************
  26. //**Boucle d'affichage des caractères**
  27. //*************************************
  28. for($i = 0; $i < 6; $i++)
  29. {
  30. $ligne = imagecolorallocate($img, mt_rand(204,204,102), mt_rand(51,153,51), mt_rand(204,0,0), mt_rand(0,153,153), mt_rand(102,0,0), mt_rand(0,0,0), mt_rand(255,255,255), mt_rand(255,51,153)); //sy ya problème
  31. imageline($img, 0, mt_rand(0, $longueur), $largeur, mt_rand(0, $longueur), $ligne);
  32. }
  33. for($i = 0; $i < 6; $i++)
  34. {
  35. $ligne = imagecolorallocate($img, mt_rand(204,204,102), mt_rand(51,153,51), mt_rand(204,0,0), mt_rand(0,153,153), mt_rand(102,0,0), mt_rand(0,0,0), mt_rand(255,255,255), mt_rand(255,51,153)); //sy ya problème
  36. imageline($img, 0, mt_rand(0, $longueur), $largeur, mt_rand(0, $longueur), $ligne);
  37.  
  38. //*************************************
  39. //**Autres**
  40. //*************************************
  41. $x = mt_rand(2,20);
  42. for($i = 0; $i < $nombre_de_caractere; $i++)
  43. {
  44. $code_ajouter = $codes[mt_rand(0,$longueur-1)];
  45. $lettres .=  $code_ajouter;
  46. $bordure = mt_rand(-25, 20);
  47. $taille = mt_rand(25,35);
  48. $taille_longueur = ($longueur / 2) + ($taille/2);
  49. $couleur_texte = imagecolorallocate($img, mt_rand(204,204,102), mt_rand(51,153,51), mt_rand(204,0,0), mt_rand(0,153,153), mt_rand(102,0,0), mt_rand(0,0,0), mt_rand(255,255,255), mt_rand(255,51,153));
  50. imagettftext($img, $taille, $bordure, $x, $taille_longueur, $couleur_texte, $realpath($police[array_rand($police)]), $code_ajouter);
  51. $x += 1.2 * $taille + mt_rand(0,2);
  52.  }
  53. $_SESSION['mycode'] = $mycode;
  54. header('Content-type: image/png');
  55. imagepng($img);
  56. imagedestroy($img);
  57. ?>



Est pour la page d'index ou va être afficher l'image, voici quelque code
parce qu'elle ne s'affiche pas :lol:

Code : HTML - Afficher / masquer les numéros de ligne
  1. <img src="crypt.php"  alt="image captcha anti-bot"/> <br />
  2.                 Votre code ici : <input type="text" name="verif_code" /><br />


Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php if (isset($_POST['pseudo']) AND isset($_POST['message']) AND isset($_POST['verif_code']) AND $_POST['verif_code']==$_SESSION['mycode'])?>

PS: J'ai mis un session_start en haut de l'index ;)
est c'est pour mettre dans la page de mon livre d'or "le captcha" :)

Merci :D
Édité le 09/08/2007 à 16:09:47 par Moxostoma
Hors ligne wonerz # Posté le 09/08/2007 à 16:47:04
Avatar

J'ai un peu amélioré mon code du début,dites moi quel style vous préférez:
1)Image utilisateur2)Image utilisateur3)Image utilisateur
1)=traits aléatoires + écriture dans la même couleur
2)=traits aléatoires + écriture dans une couleur aléatoire
3)=traits aléatoires + écriture dans une couleur aléatoire + fusion de fond
Hors ligne Blackhole # Posté le 09/08/2007 à 16:57:37
Bear, and forbear
Avatar

Je trouve pas tes Captcha très beau, bilou89, par contre ils doivent être très efficaces ;) Bravo ^^ !

Ok, voilà mon code ^^ ! Seul les 9 premières variables sont à modifier ;) ! Il est pas commenté mais je pense pas que ce soit nécéssaire, si ?
( Notez aussi que je l'ai pas relu pour voir s'il était optimisé ;) )

Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. /**************************
  3. *** Captcha PAR Blackhole ***
  4. **************************/
  5. header('Content-type: image/png');
  6.  
  7. $alphabet = str_split('ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890@!()[]{}=#@+-&$!?:');
  8. $largeur_image = 300;
  9. $hauteur_image = 80;
  10. $nb_caractere_chaine = 5;
  11. $flottement_couleur = 30;
  12. $flottement_rotation = 30;
  13. $nb_cercle = 15;
  14. $flottement_couleur_cercle = 100;
  15. $anti_effacement = true;
  16.  
  17. $nb_caractere_total = count($alphabet);
  18. $image = imageCreateTrueColor($largeur_image, $hauteur_image);
  19. $couleur_fond = array(mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  20. $fond = imageColorAllocate($image, $couleur_fond[0], $couleur_fond[1], $couleur_fond[2]);
  21. imageFilledRectangle($image, 0, 0, $largeur_image, $hauteur_image, $fond);
  22.  
  23. for ($i = 0; $i < $nb_caractere_chaine; $i++)
  24.         $chaine[] = $alphabet[mt_rand(0, $nb_caractere_total-1)];
  25.  
  26. if (!$anti_effacement)
  27. {
  28.         foreach($chaine as $cle => $caractere)
  29.         {
  30.                 $image_lettre = imageCreateTrueColor(100, 100);
  31.                 imageFill($image_lettre, 0, 0, $fond);
  32.                 $noir = imageColorAllocate($image_lettre, 0, 0, 0);
  33.                 $couleur = imageColorAllocate($image_lettre, 255-$couleur_fond[0]+mt_rand(0-$flottement_couleur, $flottement_couleur),
  34.                                                                                         255-$couleur_fond[1]+mt_rand(0-$flottement_couleur, $flottement_couleur),
  35.                                                                                         255-$couleur_fond[2]+mt_rand(0-$flottement_couleur, $flottement_couleur));
  36.                 imageTTFtext($image_lettre, mt_rand(25, 30), 0, 0, 35, $couleur, 'police'. mt_rand(0, 1) .'.ttf', $caractere);
  37.                 $image_lettre = imageRotate($image_lettre, mt_rand(0-$flottement_rotation, $flottement_rotation), $fond, 0);
  38.                 imageCopy($image, $image_lettre, $cle*55+5, 0, 0, 0, imagesx($image_lettre)+80, imagesy($image_lettre)+80);
  39.                 imageDestroy($image_lettre);
  40.         }
  41. }
  42. else
  43. {
  44.         foreach($chaine as $cle => $caractere)
  45.         {
  46.                 $image_lettre = imageCreateTrueColor(100, 100);
  47.                 $noir = imageColorAllocate($image_lettre, 0, 0, 0);
  48.                 $transparent = imageColorAllocateAlpha($image_lettre, 0, 0, 0, 0);
  49.                 imageColorTransparent($image_lettre, $noir);
  50.                 $couleur = imageColorAllocate($image_lettre, 255-$couleur_fond[0]+mt_rand(0-$flottement_couleur, $flottement_couleur),
  51.                                                                                         255-$couleur_fond[1]+mt_rand(0-$flottement_couleur, $flottement_couleur),
  52.                                                                                         255-$couleur_fond[2]+mt_rand(0-$flottement_couleur, $flottement_couleur));
  53.                 imageTTFtext($image_lettre, mt_rand(25, 30), 0, 0, 35, $couleur, 'police'. mt_rand(0, 1) .'.ttf', $caractere);
  54.                 $image_lettre = imageRotate($image_lettre, mt_rand(0-$flottement_rotation, $flottement_rotation), $transparent, 1);
  55.                 imageCopyMerge($image, $image_lettre, $cle*55+5, 0, 0, 0, imagesx($image_lettre)+80, imagesy($image_lettre)+80, 100);
  56.                 imageDestroy($image_lettre);
  57.         }
  58. }
  59.  
  60. for ($i = 0; $i < $nb_cercle; $i++)
  61. {
  62.         $couleur = imageColorAllocate($image, 255-$couleur_fond[0]+mt_rand(0-$flottement_couleur_cercle, $flottement_couleur_cercle),
  63.                                                                                 255-$couleur_fond[1]+mt_rand(0-$flottement_couleur_cercle, $flottement_couleur_cercle),
  64.                                                                                 255-$couleur_fond[2]+mt_rand(0-$flottement_couleur_cercle, $flottement_couleur_cercle));
  65.         $valeur_largeur = array(mt_rand(-50, 0), mt_rand($largeur_image, $largeur_image+50));
  66.         $valeur_hauteur = array(mt_rand(-50, 0), mt_rand($hauteur_image, $hauteur_image+50));
  67.         imageSetThickness($image, 2);
  68.         imageEllipse($image, $valeur_largeur[mt_rand(0, 1)], $valeur_hauteur[mt_rand(0, 1)],
  69.                                 mt_rand(30, 500), mt_rand(100, 500), $couleur);
  70. }
  71.  
  72.  
  73. imagePng($image);
  74. ?>
Édité le 09/08/2007 à 17:01:25 par Blackhole

Forum PHP au vert !

- Le moteur de templates le plus rapide, le plus pratique et le plus effiace ? Par ici !
 
Hors ligne jaye # Posté le 09/08/2007 à 17:13:00
Avatar

Blackhole on veut voir une image de démo ! :p

wonerz ton captcha est tres bien, mais les lettres sont trop melangées, on ne sait pas dans quel ordre les recopier :euh:

EasyPict pour redimensionner, optimiser, convertir en GIF PNG ou JPEG des photos et des images en ligne...

Le site consacré aux albums jeunesse et à tous ceux qui leur donnent une âme :
De papier (de soie), d'encre (de Chine) et de couleurs (si nuancées)...
 
Hors ligne Blackhole # Posté le 09/08/2007 à 18:07:49
Bear, and forbear
Avatar

L'image de démo ? Ici ^^

Forum PHP au vert !

- Le moteur de templates le plus rapide, le plus pratique et le plus effiace ? Par ici !
 
Hors ligne ilys # Posté le 09/08/2007 à 22:20:23
Vive le Rock, Linux, et le SDZ
Avatar

Ville : Fès
Pays : Maroc
études : ENSAF

:colere2: :colere: JAYE :colere: :colere2:
J'ai vu ton site, et tu travaille sur le même projet que moi :colere2: :colere: .
Je te conseil de fermer ton site sinon Image utilisateur.
(mais non je rigole, mon site est beaucoup mieux, et je te détronerai bien avant que tu n'ai le temp de dire Ouf :p )

Ben sinon les gars vos captchas sont très beau
>>>>>>Wonrez: tes captchas font un peu trop aléatoire. On reconnait plus le haut du bas, ni le commencement de la fin. Essaie de les modifier un peu celà fera serais mieux.
Merci blackhole de contribuer avec le code source de ta page. Ca aurais été mieux si il étais commenté mais bon.

Fait par Tn. :soleil:
>>>>>>Mon tuto sur la Recherche séquentielle et dichotomique
>>>>>>Mon topic sur les images anti-bots
 
Hors ligne wonerz # Posté le 09/08/2007 à 22:23:42
Avatar

Ca se lit normalement,de la lettre la plus à gauche à la lettre la plus à droite ^^
Hors ligne ilys # Posté le 09/08/2007 à 23:27:05
Vive le Rock, Linux, et le SDZ
Avatar

Ville : Fès
Pays : Maroc
études : ENSAF

Et bien si tu pouvais tout simplement abaisser un peu la largeur du jeu celà serai très bien.
Par exemple le $y pourrait être choisi dans un champ de longueur de 5 ou 6pixel.
Sinon faudras agrandir l'espacement entre les lettres.
Ce n'est qu'un avis biensûr, à discuter

Fait par Tn. :soleil:
>>>>>>Mon tuto sur la Recherche séquentielle et dichotomique
>>>>>>Mon topic sur les images anti-bots
 
Hors ligne jaye # Posté le 10/08/2007 à 08:29:21
Avatar

Citation : tnsaad
:colere2: :colere: JAYE :colere: :colere2:
J'ai vu ton site, et tu travaille sur le même projet que moi :colere2: :colere: .
Je te conseil de fermer ton site sinon Image utilisateur.
(mais non je rigole, mon site est beaucoup mieux, et je te détronerai bien avant que tu n'ai le temp de dire Ouf :p )

:lol: :lol: :lol:
je n'ai qu'un mot a dire : preum's ! :p
ispice de copieur va !

EasyPict pour redimensionner, optimiser, convertir en GIF PNG ou JPEG des photos et des images en ligne...

Le site consacré aux albums jeunesse et à tous ceux qui leur donnent une âme :
De papier (de soie), d'encre (de Chine) et de couleurs (si nuancées)...
 
Hors ligne bilou89 # Posté le 15/08/2007 à 18:05:47
Avatar

Citation : Blackhole
Je trouve pas tes Captcha très beau, bilou89 [...]

Cela vient surement du fait que tout ce qui est affiché est aléatoirement, je ne contrôle rien, c'est comme si je vidais par terre un carton avec plein d'objet dedans. De plus les couleurs (qui sont aussi aléatoires) peuvent parfois être plus moches que d'autres.

Peut-être préféra-tu en noir et blanc ?
Donne ton avis sur cela, j'ai juste modifié les couleurs, la disposition des éléments reste basé sur le même système : dans tout les sens :p .

Image utilisateur
----------------------------------------------------------------
Image utilisateur
----------------------------------------------------------------
Image utilisateur


Code source de la version N&B :
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. /***************************************/
  3. /*** Captcha par bilou89 ***/
  4. /*** bilou89-4sang@hotmail.fr ***/
  5. /***************************************/
  6.  
  7. session_start(); // Création de la session
  8.  
  9. $largeur = 300; // Largeur de l'image
  10. $hauteur = 60; // Hauteur de l'image
  11.  
  12. // Liste des polices utilisées aléatoirement, à placer dans le dossier police/
  13. $polices = array('polices/trebuc.ttf', 'polices/tahomabd.ttf', 'polices/verdanab.ttf');
  14.  
  15. $image = imagecreatetruecolor($largeur, $hauteur); // Création de l'image
  16. $fond = imagecolorallocate($image, 255, 255, 255); // Couleur de fond
  17. imagefill($image, 0, 0, $fond); // Coloration du fond
  18.  
  19.  
  20. /**************************************/
  21. /***  Traçage des lignes/cercles sur le fond ***/
  22. /**************************************/
  23.  
  24. // 3 lignes vertial
  25. for($i = 0; $i < 3; $i++)
  26. {
  27.         $couleur = mt_rand(190, 240);
  28.         $couleur_ligne = imagecolorallocate($image, $couleur, $couleur, $couleur); // Couleur de la ligne
  29.         imagesetthickness($image, mt_rand(1, 4)); // Changement de l'épaisseur de la ligne
  30.         imageline($image, 0, mt_rand(0, $hauteur), $largeur, mt_rand(0, $hauteur), $couleur_ligne); // Traçage de la ligne
  31. }
  32.  
  33. // 3 lignes horizontal
  34. for($i = 0; $i < 3; $i++)
  35. {
  36.         $couleur = mt_rand(190, 240);
  37.         $couleur_ligne = imagecolorallocate($image, $couleur, $couleur, $couleur); // Couleur de la ligne
  38.         imagesetthickness($image, mt_rand(1, 4)); // Changement de l'épaisseur de la ligne
  39.         imageline($image, mt_rand(0, $largeur), 0, mt_rand(0, $largeur), $hauteur, $couleur_ligne); // Traçage de la ligne
  40. }
  41.  
  42. // 3 cercles
  43. for($i = 0; $i < 3; $i++)
  44. {
  45.         $couleur = mt_rand(190, 240);
  46.         $couleur_ligne = imagecolorallocate($image, $couleur, $couleur, $couleur); // Couleur du cercle
  47.         imagesetthickness($image, mt_rand(1, 2)); // Changement de l'épaisseur du cercle
  48.         imageellipse($image, mt_rand(10, 290), mt_rand(10, 40), mt_rand(5, 60), mt_rand(5, 60), $couleur_ligne); //  Traçage du cercle
  49. }
  50.  
  51. imagesetthickness($image, 1); // Remise de l'épaisseur des lignes, cercles, ... à 1px
  52.  
  53. /**************************************/
  54. /*** Traçage des caractères sur le fond ***/
  55. /**************************************/
  56.  
  57. $couleur = mt_rand(160, 190);
  58. $couleur_lettres = imagecolorallocate($image, $couleur, $couleur, $couleur); // Couleur des lettres de fond
  59. $nb_caracteres = 20; // Nombre de caractères citués au fond
  60. $lettres = 'abcdefghijklmnopqrstuvwxyz-+*/@$&éè'; // Caractères utilisés pour les lettres de fond
  61. $lettres_melange = strlen($lettres); // Mélange des caractèred
  62.  
  63. $x = mt_rand(5, 295); // Définition aléatoire de la position de X
  64. $y = mt_rand(5, 55); // Définition aléatoire de la position de Y
  65.  
  66. $i = 0;
  67. // Boucle pour déssiner les caractères de fond
  68. while($i < $nb_caracteres)
  69. {       
  70.         $lettre_a_ajouter = $lettres[mt_rand(0, $lettres_melange - 1)]; // Selection de la lettre à ajouter
  71.         $taille = mt_rand(12, 20); // Définition de la taille de la lettre
  72.         $angle = mt_rand(0, 180); // Définition de l'angle de la lettre
  73.        
  74.         imagettftext($image, $taille, $angle, $x ,$y, $couleur_lettres, realpath($polices[array_rand($polices)]), $lettre_a_ajouter); // Traçage de la lettre
  75.        
  76.         $x = mt_rand(5, 295); // Changement de position de X
  77.         $y = mt_rand(5, 55); // Changement de position de Y
  78.        
  79.         $i++; // Inscrémentation de 1
  80. }
  81.  
  82. /**************************************/
  83. /*** Traçage et création du code ***/
  84. /**************************************/
  85.  
  86. $nb_caracteres = 6; // Nombre de caractères
  87. $lettres = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789'; // Caractères autorisés
  88. $lettres_melange = strlen($lettres); // Mélange des caractères
  89. $code = ''; // Création de $code
  90.  
  91. $x = mt_rand(2, 20); // Définition aléatoire de X
  92. $y = ($hauteur / 2) + mt_rand(0, 10); // Definition de Y ~ au milieu de l'image
  93.  
  94. $i = 0;
  95. // Boucle pour dessiner les lettres
  96. while($i < $nb_caracteres)
  97. {
  98.         $lettre_a_ajouter = $lettres[mt_rand(0, $lettres_melange - 1)]; // Selection de la lettres
  99.         $taille = mt_rand(25,35); // Définition de la taille
  100.         $angle = mt_rand(-30, 25); // Définition de l'angle
  101.        
  102.         $code .=  $lettre_a_ajouter; // Ajout de la lettre dans $code
  103.        
  104.         $couleur = mt_rand(0, 150);
  105.         $couleur_lettre = imagecolorallocate($image, $couleur, $couleur, $couleur); // Selection de la couleur de la lettre
  106.        
  107.         imagettftext($image, $taille, $angle, $x, $y, $couleur_lettre, realpath($polices[array_rand($polices)]), $lettre_a_ajouter); // Traçage de la lettre
  108.    
  109.         $x += $taille + mt_rand(2, 20); // Changement de position de X
  110.         $y = ($hauteur / 2) + mt_rand(10, 15); // Petit changement de position de Y
  111.        
  112.         $i++; // Incrémentation de 1
  113. }
  114.  
  115. /**************************************/
  116. /***  Traçage des lignes/cercles sur le devant ***/
  117. /**************************************/
  118.  
  119. // 2 lignes vertial
  120. for($i = 0; $i < 2; $i++)
  121. {
  122.         $couleur = mt_rand(190, 240);
  123.         $couleur_ligne = imagecolorallocate($image, $couleur, $couleur, $couleur); // Couleur de la ligne
  124.         imageline($image, 0, mt_rand(0, $hauteur), $largeur, mt_rand(0, $hauteur), $couleur_ligne); // Traçage de la ligne
  125. }
  126.  
  127. // 2 lignes horizontal
  128. for($i = 0; $i < 2; $i++)
  129. {
  130.         $couleur = mt_rand(190, 240);
  131.         $couleur_ligne = imagecolorallocate($image, $couleur, $couleur, $couleur); // Couleur de la ligne
  132.         imageline($image, mt_rand(0, $largeur), 0, mt_rand(0, $largeur), $hauteur, $couleur_ligne); // Traçage de la ligne
  133. }
  134.  
  135. $_SESSION['captcha'] = $code; // Enregistrement du $code dans la session
  136.  
  137. header('Content-type: image/png'); // Déclaration de la création d'un image PNG
  138. imagepng($image); // Création de l'image
  139. imagedestroy();
  140. ?>
Édité le 13/09/2007 à 18:47:15 par bilou89

Image utilisateur
 
Hors ligne Blackhole # Posté le 16/08/2007 à 09:43:16
Bear, and forbear
Avatar

Je ne contrôle pas grand chose non plus ^^ !

T'a raison, ca dépend de la couleur de fond je crois, donc c'est entièrement subjectif ;) ! En noir et blanc c'est trop peu ... coloré ... :euh:

En tout cas, encore une fois, bravo !

Forum PHP au vert !

- Le moteur de templates le plus rapide, le plus pratique et le plus effiace ? Par ici !
 
Hors ligne ddlink # Posté le 16/08/2007 à 15:51:50
Avatar

études : Polytech'Alger

salut
j'aimerais poser une question un peut ... :euh:
a quoi servent toutes ces ratures, inclinaison ... esque ca les rends plus sure? ou esque question securité c'est la meme chose que un code generer mis sur une image et afficher ???
merci a vous
Hors ligne Savageman # Posté le 16/08/2007 à 16:08:49
Avatar
Flux RSS

études : INSA Lyon

Oui, c'est ça, sinon on peut les décoder facilement :)
http://sam.zoy.org/pwntcha/
 
Hors ligne ddlink # Posté le 17/08/2007 à 01:00:47
Avatar

études : Polytech'Alger

je viens de tout lire,
merci pour ton éclaircissement
Hors ligne jaye # Posté le 17/08/2007 à 10:52:49
Avatar

me revoila avec une nouvelle version :p

Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. //la chaine de texte
  3. $text="AbcD56";
  4.  
  5. //image vide
  6. $image=imagecreatetruecolor(300,100);
  7.  
  8. // definition des couleurs
  9. $bleu=imagecolorallocate($image, 31, 31, 201);
  10. $rouge=imagecolorallocate($image, 201, 31, 31);
  11. $vert=imagecolorallocate($image, 31, 151, 31);
  12. $blanc=imagecolorallocate($image, 200, 200, 200);
  13.  
  14. //les memes avec un peu de transparence
  15. $bleualpha=imagecolorallocatealpha($image, 31, 31, 201, 80);
  16. $rougealpha=imagecolorallocatealpha($image, 201, 21, 21, 50);
  17. $vertalpha=imagecolorallocatealpha($image, 31, 201, 31, 50);
  18. $blancalpha=imagecolorallocatealpha($image, 220, 220, 220, 50);
  19.  
  20. //les memes avec un peu moins de transparence
  21. $bleualpha2=imagecolorallocatealpha($image, 31, 31, 241, 20);
  22. $rougealpha2=imagecolorallocatealpha($image, 201, 21, 21, 20);
  23. $vertalpha2=imagecolorallocatealpha($image, 11, 241, 61, 10);
  24. $blancalpha2=imagecolorallocatealpha($image, 220, 220, 220, 20);
  25.  
  26. //definition des motifs, notez que $motif_top utilise des couleurs avec transparence
  27. $motif_top = Array($vertalpha, $blancalpha, $rougealpha, $blancalpha, $blancalpha,  $bleualpha, $bleualpha);
  28. $motif_fond = Array($vert, $vert, $vert,$rouge, $vert, $bleu, $bleu, $vert, $blanc, $blanc, $vert, $vert);
  29.  
  30. shuffle($motif_fond);
  31. shuffle($motif_top);
  32.  
  33. //on remlpit l'image avec le $motif_fond
  34. imagesetstyle($image, $motif_fond);
  35. imagefill($image, 0, 0, IMG_COLOR_STYLED);
  36.  
  37. // on met les couleurs et les polices pour le texte en tableau, pour choisir aleatoirement plus tard
  38. $couleurs = array( $bleualpha2, $rougealpha2, $blancalpha2, $vertalpha2);
  39. $polices = array("gulim.ttc", "lsansi.ttf", "palab.ttf", "BOOKOSB.TTF");
  40.  
  41. //calcul longueur du texte et espacement des caracteres
  42. $longueur=strlen($text);
  43. $pas=300/$longueur;
  44.  
  45. //on parcourt le texte caractere par caractere
  46. for ($i=0; $i<$longueur; $i++)
  47. {
  48.         $lettre=$text[$i];
  49.         //angle du caractere aleatoire
  50.         $angle=mt_rand(-30, 30);
  51.         //numero2 de couleur aleatoire, qui sera utilisé avec le tableau de couleur défini avant la boucle
  52.         $couleur1=mt_rand(0,3);
  53.         $couleur2=mt_rand(0,3);
  54.         //taille de texte aleatoire
  55.         $taille=mt_rand(40,60);
  56.         //numero de police aleatoire
  57.         $police=mt_rand(0,3);
  58.         //on definit le decalage entre les 2 caracteres
  59.         $decalage1=mt_rand(-5,5);
  60.         $decalage2=mt_rand(-5,5);
  61.         //on dessine les caracteres, avec les parametres aléatoires
  62.         imagettftext($image, $taille, $angle, $pas*$i, 80, $couleurs[$couleur1], $polices[$police], $lettre);
  63.         imagettftext($image, $taille, $angle, $pas*$i+$decalage1, 80+$decalage2, $couleurs[$couleur2], $polices[$police], $lettre);
  64. }
  65.  
  66. //nouvelle image vide
  67. $image2=imagecreatetruecolor(300,100);
  68.  
  69. //une copie avec deformation, pour brouiller les contours
  70. $i=0;
  71. $z=0;
  72. $k=2;
  73. while($i<=110)
  74. {
  75. //hauteur de la copie
  76. $j=mt_rand(1,3);
  77.  
  78. //taille du decalage horizontal
  79. $d=$i%6;
  80.  
  81. //copie
  82. imagecopyresampled($image2, $image, $d, $z, 0, $i, 300, $j, 300, $k);
  83. //incrementation
  84. $i=$i+$j;
  85. $z=$i+$k;
  86. }
  87.  
  88. imagedestroy($image);
  89.  
  90. //on dessine un motif transparent par dessus le texte pour "brouiller" un peu plus
  91.  
  92. imagesetstyle($image2, $motif_top);
  93. imagefilledrectangle($image2, 0, 0, 300, 100, IMG_COLOR_STYLED);
  94.  
  95. //c'est fini, on dessine l'image
  96. header("Content-type: image/png");
  97. imagepng($image2);
  98.  
  99. ?>


ce qui donne :
Image utilisateur
Édité le 18/08/2007 à 15:43:48 par jaye

EasyPict pour redimensionner, optimiser, convertir en GIF PNG ou JPEG des photos et des images en ligne...

Le site consacré aux albums jeunesse et à tous ceux qui leur donnent une âme :
De papier (de soie), d'encre (de Chine) et de couleurs (si nuancées)...
 
Hors ligne harcher81 # Posté le 17/08/2007 à 23:35:08
Avatar
Flux RSS

Ville : Québec
Pays : Canada

j'adore particulièrement le captcha de bilou89.

pour le dernier de jaye on ne le voit pas et sa vient de l'adresse (http://localhost/captcha2.php)

Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
 
Hors ligne jaye # Posté le 18/08/2007 à 15:44:54
Avatar

Citation : harcher81
pour le dernier de jaye on ne le voit pas et sa vient de l'adresse (http://localhost/captcha2.php)

mais quel boulet je fais ! :euh: :-°

voila c'est corrigé !

EasyPict pour redimensionner, optimiser, convertir en GIF PNG ou JPEG des photos et des images en ligne...

Le site consacré aux albums jeunesse et à tous ceux qui leur donnent une âme :
De papier (de soie), d'encre (de Chine) et de couleurs (si nuancées)...
 

Retour au forum "PHP" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx