PHP梨子CAPTCHA

时间:2010-11-12 07:45:30

标签: php pear

为什么下面的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表单

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

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

/FORM /HTML        

1 个答案:

答案 0 :(得分:0)

图像文件名在发送的HTML中可见。

如果您使用固定文件名,那么机器人很容易建立与给定图像相关联的单词的目录,从而击败CAPTCHA的点。

因此,图像被复制到一些随机名称,显示在CAPTCHA页面上,然后删除。