Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1653 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Création d'une image pour valider un formulaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Création d'une image pour valider un formulaire

n°1603738
fearsome
Posté le 24-08-2007 à 16:39:06  profilanswer
 

Bonjour,
 
Je cherche à créer une image en php pour vérifier que l'utilisateur est bien "humain". Pour cela, je crée une image en jpeg avec 5 caractères aléatoires que j'envoie ensuite sur mon formulaire. Je vérifie ensuite la saisie de l'utilisateur et compare.  
 
Enfin pour l'instant je compare pas grand chose, car voici mon problème. Pour afficher l'image générée dynamiquement, j'utilise une balise IMG avec comme SRC le fichier php qui contient mon script. Seulement, de ce fait, je n'arrive pas à récupérer la valeur du texte que je génère :/
 
Quelqu'un aurait il une idée pour contourner ce problème ?  
 
Merci par avance...
 
Au cas ou, voici mon script qui génère l'image :  
 

Code :
  1. <?
  2. $fond = @imagecreatefromjpeg("pic1.jpg" ) or die("Erreur de création de l'image" );
  3. $largeur = 120;
  4. $hauteur = 60;
  5. $image = ImageCreate($largeur, $hauteur);
  6. ImageCopy($image, $fond, 0, 0, 0, 0, $largeur, $hauteur);
  7. ImageDestroy($fond);
  8. $tab=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','0','1','2','3','4','5','6','7','8','9');
  9. $texte="";
  10. for($i=0;$i<5;$i++) {
  11. $offset=rand(0,61);
  12. $texte=$texte.$tab[$offset]." ";
  13. }
  14. $fontes = array("tahoma.ttf" );
  15. $rnd = rand(0, count($fontes)-1);
  16. $police = $fontes[$rnd];
  17. $couleurTexte = imagecolorallocate($image, 255,255,255); // blanc  
  18. ImageTTFText($image, 12, 12, 30, $hauteur/(3/2), $couleurTexte, $police, $texte);
  19. $_SESSION['texteimage']=$texte;
  20. imagejpeg($image);
  21. imagedestroy($image);
  22. ?>

mood
Publicité
Posté le 24-08-2007 à 16:39:06  profilanswer
 

n°1603743
flo850
moi je
Posté le 24-08-2007 à 16:50:12  profilanswer
 

rajoute un session_start au debut

n°1603744
fearsome
Posté le 24-08-2007 à 16:54:22  profilanswer
 

Hmmm effectivement je n'avais pas pensé à cela... par contre, même après l'avoir ajouté, rien n'y fait. On dirait que l'appel de ce code par la balise img m'interdit l'accès aux variables qui y sont utilisées...

n°1603745
fearsome
Posté le 24-08-2007 à 16:57:29  profilanswer
 

Ah ca avance... apparemment il y'avait un problème de rafraichissement. Bon, maintenant, ça m'affiche l'ancienne variable :p
Si je génère une fois E0TX8, la fois suivante l'image affiche abcde et la variable E0TX8 ... ça devrait se résoudre rapidement ^^
 
Merci pour ton aide flo ^^

n°1603761
flo850
moi je
Posté le 24-08-2007 à 17:20:23  profilanswer
 

rajoute des header pour que le navigateur ne mette pas l'image en cache  

n°1603962
Bouchon2
Crabe glauque
Posté le 25-08-2007 à 14:58:13  profilanswer
 

Et supprime aussi les lettres o, O, I et B et les chiffres 0, 1 et 8 qui posent toujours problème aux utilisateurs faiblement humains...

n°1604082
pot2yaourt
Posté le 26-08-2007 à 10:28:37  profilanswer
 

Salut,
 
Juste pour info, il existe JpGraph, une lib qui génère tout un tas de graphiques et aussi le type d'images aléatoires dont tu as besoin, en qqs lignes de code seulement.
 
Ci-dessous l'exemple qui est donné avec JpGraph ( http://www.aditus.nu/jpgraph/ ) :

Code :
  1. <?php
  2. // Antispam example using a random string
  3. require_once "../jpgraph_antispam.php";
  4. // Create new anti-spam challenge creator
  5. // Note: Neither '0' (digit) or 'O' (letter) can be used to avoid confusion
  6. $spam = new AntiSpam();
  7. // Create a random 5 char challenge and return the string generated
  8. $chars = $spam->Rand(5);
  9. // Stroke random cahllenge
  10. if( $spam->Stroke() === false ) {
  11.     die('Illegal or no data to plot');
  12. }
  13. ?>


 
Je souhaite moi aussi inclure ce type de protection sur un formulaire, mais je voulais savoir si je suis obligé de créer physiquement le fichier Jpeg pour l'afficher ou pas ?
 
Si on reprend l'exemple de code ci-dessus, la méthode Stroke() (la méthode qui crée l'image) se termine par :

Code :
  1. [...]
  2. header("Content-type: image/jpeg" );
  3. imagejpeg($resimg);


 
Et dans ma page j'ai donc une balise <img src="" />, mais je ne sais pas comment faire apparaître l'image dedans... vous avez une idée ?
 
Au début j'avais commencé à modifier la méthode Stroke afin de créer un fichier Jpeg, mais à chaque fois que le formulaire est lancé, il génère donc un Jpeg... au bout d'un moment ça va me faire tout un tas de Jpeg inutiles.
 
Si vous avez une idée, je suis preneur !!
Lionel.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Création d'une image pour valider un formulaire

 

Sujets relatifs
redimensionnement sous formulaire dans un etatLabelisation image binaire (apres seuillage)
Création d'une DLLaide c++ et formulaire html
probleme avec creation de table sql mayadmin[HTML] Création de mon site: les problèmes.
recuperer données d'un formulaire HTMLcreer formulaire (bon de commande) FrontPage
Taille d'image avec fo:external-graphicFormulaire GET dans fichier PHP
Plus de sujets relatifs à : Création d'une image pour valider un formulaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR