2010-11-12 3 views
1

Pourquoi le code PHP ci-dessous, supprime-t-il certaines images CAPTCHA et permet-il à plusieurs autres images de rester sur le serveur?PHP PHP CAPTCHA

psuedo code

//process_form.php 

PHP 
session_start() 


$radiobutton = ''; 
$captcha_set = false; 

IF POST SUBMIT 
    IF empty text1 && empty text2 
     echo error msg, include HTML FORM 

    ELSE IF empty radiobtn 
     echo error msg, include HTML FORM 

    ELSE IF 
     isset POST[phrase] isstring POST[phrase] isset SESSION[phrase] 
     strlen POST[phrase] > 0 strlen SESSION[phrase] > 0 
     POST[phrase] == SESSION[phrase] 

     $captcha_set = true; 
     if ($captcha_set) 
     { 
      unset($_SESSION['phrase']); 
      unlink(sha1(session_id()) . '.png'); 
     }    

     SQL INSERT 

    ELSE 
     echo error msg, include HTML FORM 

ELSE 
    include HTML FORM 
/PHP 


HTML FORMULAIRE

PHP 
    Require Once Text/Captcha.php 
    PEAR Capthca Options 
/PHP 

HTML 
FORM 
    PHP 
     echo '<img src="' . sha1(session_id()) . '.png?' . time() . '" />'; 
    /PHP 

/FORM /HTML   

Répondre

0

Le nom du fichier d'image est visable dans le code HTML envoyé.

Si vous utilisiez des noms de fichiers fixes, il serait trop facile pour un robot de constituer un catalogue des mots associés à une image donnée, ce qui annulerait le point du CAPTCHA. Par conséquent, l'image est copiée à un nom aléatoire, affichée sur la page CAPTCHA, puis supprimée.

+0

J'ai reformulé la question initiale. – rrrfusco