我有一个非常简单的验证码,如下所示:
<?php
session_start();
function randomText($length) {
$pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
for($i=0;$i<$length;$i++) {
$key .= $pattern{rand(0,35)};
}
return $key;
}
$textCaptcha=randomText(8);
$_SESSION['tmptxt'] = $textCaptcha;
$captcha = imagecreatefromgif("bgcaptcha.gif");
$colText = imagecolorallocate($captcha, 0, 0, 0);
imagestring($captcha, 5, 16, 7, $textCaptcha, $colText);
header("Content-type: image/gif");
imagegif($captcha);
?>
问题是,如果用户安装了 YSlow,图像会被查询 2 次,因此,验证码会重新生成,并且永远不会与用户插入的验证码匹配。
我看到如果我将内容类型标头作为 gif 传递,那只是第二次查询,如果我将其打印为普通 php,则不会发生这种情况。
有人对此有任何线索吗?我如何防止它或确定第二个查询是由 YSlow 进行的,以便不再生成验证码。
问候,影子。