Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

GÉNÉRER UNE IMAGE AVEC TEXTE ALÉATOIRE


Information sur la source

Catégorie :Graphique Niveau : Débutant Date de création : 09/12/2004 Date de mise à jour : 09/12/2004 02:40:49 Vu : 6 903

Note :
1 / 10 - par 2 personnes
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

Description

Je crée en ce moment un formulaire d'inscription et je veux m'assurer qu'une personne humaine le remplit. Je fais donc commen g vu sur certains formulaires, je crée une image avec un texte généré par php.
C vraiment du microcode, mais je chercahis depuis un moment un peu partout et je trouvais pas chaussure a mon pied...
 

Source

  • Si la librairie n'est pas activée dans votre distro php : Dans mon cas, g décommenté la ligne extension:php_gd2.dll.
  • Si elle est pas installée avec, c un peu plus complexe (cf manuel php ;-))
  • Le script c celui la, par exemple 'build_image.php':
  • <?
  • /* On peut mettre image/jpg, image/gif, selon vos besoins */
  • header("Content-type: image/png");
  • /*
  • La aussi, g pas fait dans la subtilité,
  • une longue chaine de 32 caractères tranchée aux 8 premiers... a vous de voir
  • */
  • $token = substr(md5(uniqid(rand())),0,8);
  • /* Ici c le code qu'on trouve dans le manuel php hein... */
  • $im = @imagecreatetruecolor(100, 25) or die ("Impossible d'initialiser la librairie GD");
  • /*
  • Tè la g un petit problème,
  • je n'arrive pas à attribuer cette couleur au fond de l'image
  • En effet, dans le manuel, on crée une variable $background_color qu'on n'utilise pas
  • */
  • $background_color = imagecolorallocate($im, 255, 255, 240);
  • /* La ca marche, mais on s'en sert effectivement dans la fonction imagestring */
  • $text_color = imagecolorallocate($im, 255, 255, 255);
  • imagestring($im, 5, 5, 5, $token, $text_color);
  • /*
  • Selon le header envoyé, on utilise imagepng, imagejpeg ou imagegif
  • (attention toutefois a la version de votre php cf manuel php)
  • */
  • imagepng($im);
  • imagedestroy($im);
  • ?>
  • Et dans le fichier ou se trouve le formulaire, on crée la balise img:
  • <img src="build_image.php">
Si la librairie n'est pas activée dans votre distro php : Dans mon cas, g décommenté la ligne extension:php_gd2.dll.
Si elle est pas installée avec, c un peu plus complexe (cf manuel php ;-))

Le script c celui la, par exemple 'build_image.php':
<?
/* On peut mettre image/jpg, image/gif, selon vos besoins */
header("Content-type: image/png");
/*
 La aussi, g pas fait dans la subtilité, 
 une longue chaine de 32 caractères tranchée aux 8 premiers... a vous de voir
*/
$token = substr(md5(uniqid(rand())),0,8);
/* Ici c le code qu'on trouve dans le manuel php hein... */
$im = @imagecreatetruecolor(100, 25) or die ("Impossible d'initialiser la librairie GD");
/*
 Tè la g un petit problème, 
 je n'arrive pas à attribuer cette couleur au fond de l'image
 En effet, dans le manuel, on crée une variable $background_color qu'on n'utilise pas
*/
$background_color = imagecolorallocate($im, 255, 255, 240);
/* La ca marche, mais on s'en sert effectivement dans la fonction imagestring */
$text_color = imagecolorallocate($im, 255, 255, 255);
imagestring($im, 5, 5, 5, $token, $text_color);
/*
 Selon le header envoyé, on utilise imagepng, imagejpeg ou imagegif
 (attention toutefois a la version de votre php cf manuel php)
*/
imagepng($im);
imagedestroy($im);
?>

Et dans le fichier ou se trouve le formulaire, on crée la balise img:
<img src="build_image.php">

Historique

09 décembre 2004 02:40:49 :

Commentaires et avis

signaler à un administrateur
Commentaire de Anthomicro le 09/12/2004 18:30:20

Salut,

<? est à remplacer par <?php

Ensuite ton code n'est pas complet, de plus tes problèmes sont à signaler sur le forum...

Bref un code pas très utile...

a +

signaler à un administrateur
Commentaire de coucou747 le 09/12/2004 18:43:14

C'est un peu risqué pour éviter le flood... C'est a dire que tu peux parfaitement avoir un jour un root a inteligence artificielle de reconaissance d'iamge... C'est pas vraiment compliqué a faire quand on veut faire chier le monde.. Suffit de prendre ta police...

C'est pour cette raison que c'est écrit dans tout les sens sur les antis floods que l'on voit sur le net un peu partout...

Tu peux mettre l'ordonée en valeur variable... Ce serais déja un peu plus efficace... Sinon choisir un fond aléatoire... et mettre une ligne ou deux en blanc par dessus au hasard toujours...

signaler à un administrateur
Commentaire de michel_roger le 10/12/2004 02:03:13

merci pour les infos.
anthomicro, pourquoi remplacer les <? par <? php ? Qu'y gagne-t-on ? portabilité, rapidité, sécurité ??
Peux-tu donc compléter mon code incomplet ??? merci
Pour l'ordonnée aléatoire, c fait. Pour le background, j'arrive meme pas a mettre la couleur que je veux...
Pour les bots a reconnaissance d'image, j'en av entendu parler, mais je prétend pas stopper tout le flood du monde, juste faire un petit truc pour niveau 'Débutant' ...
Bonne nuit

signaler à un administrateur
Commentaire de michel_roger le 10/12/2004 02:12:35

ben j'aurai au moins tilté sur flood, ca m'a permis de trouver un script beaucoup plus complet...

<a href="http://www.phpcs.com/code.aspx?ID=21585">ANTI-FLOOD PAR UN CODE IMAGE</a>

signaler à un administrateur
Commentaire de sapar le 09/04/2006 14:20:57

J'ai essayé ton code, mais c'est vrai qu'on arrive pas à gerer l'arrière plan !
Moi je voulais mettre un texte noir sur fond blanc, je l'ai donc un peu modifier, très très rapidement, et ca marche, le nouveau code est :

<?
header("Content-type: image/png");
$token = substr(md5(uniqid(rand())),0,8);
$im = ImageCreate (80, 30) or die ("Erreur lors de la création de l'image");    

$background_color = imagecolorallocate($im, 255, 255, 255);
$text_color = imagecolorallocate($im, 0, 0, 0);
imagestring($im, 5, 5, 5, $token, $text_color);

imagepng($im);
imagedestroy($im);
?>

signaler à un administrateur
Commentaire de Anthomicro le 09/04/2006 14:22:41

Salut,

j'en ai fait un si tu veux, regarde la liste de mes sources "protéger un formulaire"...

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,140 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.