Générer une image avec texte aléatoire

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 427 fois - Téléchargée 35 fois

Contenu du snippet

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 / Exemple :


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">

A voir également

Ajouter un commentaire

Commentaires

cs_Anthomicro
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
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 +
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
26 -
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...
michel_roger
Messages postés
60
Date d'inscription
lundi 6 octobre 2003
Statut
Membre
Dernière intervention
18 août 2006
-
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
michel_roger
Messages postés
60
Date d'inscription
lundi 6 octobre 2003
Statut
Membre
Dernière intervention
18 août 2006
-
ben j'aurai au moins tilté sur flood, ca m'a permis de trouver un script beaucoup plus complet...

ANTI-FLOOD PAR UN CODE IMAGE
sapar
Messages postés
1
Date d'inscription
lundi 11 juillet 2005
Statut
Membre
Dernière intervention
9 avril 2006
-
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);
?>

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.

Du même auteur (michel_roger)