为什么下面的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
答案 0 :(得分:0)
图像文件名在发送的HTML中可见。
如果您使用固定文件名,那么机器人很容易建立与给定图像相关联的单词的目录,从而击败CAPTCHA的点。
因此,图像被复制到一些随机名称,显示在CAPTCHA页面上,然后删除。