2010-11-12 83 views
1

爲什麼下面的PHP代碼,刪除一些CAPTCHA圖像,並允許其他幾個圖像保留在服務器上?PHP梨CAPTCHA

僞代碼

//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 FORM

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

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

/FORM /HTML   

回答

0

的圖像文件的名稱是在發送的HTML visable。

如果您使用了固定的文件名,機器人就很容易建立與給定圖像相關的單詞目錄,從而破壞了驗證碼的重點。

所以圖像被複制到一些隨機的名字,顯示在CAPTCHA頁面上,然後刪除。

+0

我重新解釋了最初的問題。 – rrrfusco 2010-11-12 12:45:46