Les requis pour un captcha ?

Les requis pour un captcha ? - PHP - Programmation

Marsh Posté le 07-10-2006 à 23:11:56    

Bonsoir
 
 
Je travaille actuellement sur un captcha image. Pour l'instant j'en suis au niveau logique c'est à dire l'algorithme dont voici le détail:
 
1 - creer une session pour l'utilisateur qui demande le form
2 - creer une image et stocker ses valeurs dans la session
3 - si le code retaper correspond à la valeur dans la session => OK
 
 
Pensez vous qu'il soit nécessaire d'améliorer cet algo ?  
 

Reply

Marsh Posté le 07-10-2006 à 23:11:56   

Reply

Marsh Posté le 08-10-2006 à 01:18:23    

C'est un moyen de le gérer à partir du moment où on est sur que la session ne sera pas périmé avant la fin du remplissage du formulaire.
A mon boulot, le patcha que j'ai mis en place utilise un code aléatoire dans le formulaire et un texte aléatoire lui aussi.
Le code et le texte associé sont stocké dans une base de donnée pendant quelques minutes.
Quand la personne valide le formulaire, je vérifie que le texte du captcha qu'il a saisie correspond bien au code mis dans le formulaire et je supprime l'enregistrement correspondant de la base ainsi que les enregistrements périmé.
 
Mais bon, dans l'ensemble le but c'est bien de ne pas passer le texte en clair et en fait de ne donner aucune info permettant de deviner le code par programme tout en étant capable de le vérifier. Ton systéme correspond bien à ces critaires est donc comme il faut. Enfin du moins quand il sera fait. ;)

Reply

Marsh Posté le 08-10-2006 à 01:50:57    

J ai fini l'image :
 

Code :
  1. <?php
  2.     header ("Content-type: image/png" );
  3.    
  4.     $im = ImageCreate (100, 50) or die;
  5.     $fr = rand(180,220);
  6.     $fv = rand(180,220);
  7.     $fb = rand(180,220);     
  8.     $couleur_fond = ImageColorAllocate ($im, $fr, $fv, $fb);
  9.  
  10.   for($i=0;$i<100;$i++){
  11.     ImageSetThickness ($im, rand(1,2));
  12.     $lfr = $fr + rand(1,155);
  13.     $lfv = $fr + rand(1,155);
  14.     $lfb = $fb + rand(1,155);
  15.     $couleur_line = ImageColorAllocate ($im, $lfr, $lfv, $lfb);
  16.     $x1 = rand(1,100);
  17.     $y1 = rand(1,50);
  18.     $x2 = rand(1,100);
  19.     $y2 = rand(1,50);
  20.     ImageLine ($im, $x1, $y1, $x2, $y2, $couleur_line);
  21.   }
  22.  
  23.  
  24.  
  25.    $txt = ImageCreate (100,50);
  26.    $fond = ImageColorAllocate($txt,255,255,255);
  27.    ImageColorTransparent($txt,$fond);
  28.  
  29.    $chaine = "Ye05w";
  30.    $arr = str_split($chaine);
  31.    $xi=2;
  32.    foreach($arr as $string){
  33.  
  34.    $yi= rand(0,5);
  35.    $txt_col = ImageColorallocate($txt,rand(240,255),rand(240,255),rand(240,255));
  36.    ImageString ($txt, 5,$xi , $yi, $string, $txt_col);
  37.    $xi+=rand(10,15);
  38.   }
  39.  
  40.  
  41.    imagecopyresampled($im,$txt,0,0,0,0,100,50,75,20);
  42.     ImagePng ($im);
  43. ?>


 
[:al zheimer]


Message édité par supermofo le 08-10-2006 à 01:57:05
Reply

Marsh Posté le 08-10-2006 à 02:18:35    

Evite la chaine fixe comme texte du captcha. C'est trop facile de le trouver aprés. :p

Reply

Marsh Posté le 08-10-2006 à 02:24:00    

Ouais bah j y reflechis justement :D  
 
 
Si ce script peut crée une variable de session tout baigne, sinon ca ve devenir alambiqué ...
 

Reply

Marsh Posté le 08-10-2006 à 13:58:27    

J'ai un problème : impossible de recuperer la session dans le script image.php.
 
Dans l'ordre voila ce qui se passe:
 
1- user arrive sur form.php  et obtient son code  
2 - image est generee avec la var $_SESSION
 
 
Detail image.php
 

Code :
  1. <?php
  2. session_start();
  3. header ("Content-type: image/png" );
  4. $code = $_SESSION['code'];
  5. ImagePng($bruit);


 
 
Logiquement tout devrait bien se passer. Pourtant j'assite à un decalage dans les variables de session ( la variable de session de l'image est en avance sur celle du form ).
 
 

Message cité 1 fois
Message édité par supermofo le 08-10-2006 à 16:22:43
Reply

Marsh Posté le 08-10-2006 à 17:48:33    

supermofo a écrit :

J'ai un problème : impossible de recuperer la session dans le script image.php.
 
Dans l'ordre voila ce qui se passe:
 
1- user arrive sur form.php  et obtient son code  
2 - image est generee avec la var $_SESSION
 
 
Detail image.php
 

Code :
  1. <?php
  2. session_start();
  3. header ("Content-type: image/png" );
  4. $code = $_SESSION['code'];
  5. ImagePng($bruit);


 
 
Logiquement tout devrait bien se passer. Pourtant j'assite à un decalage dans les variables de session ( la variable de session de l'image est en avance sur celle du form ).


 
 
Resolu: session_destroy() planque au milieu du code  :lol:  

Reply

Marsh Posté le 09-10-2006 à 12:17:42    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed