[英]PHP Static var not working
我正在上Captcha班,我快完成了,有一件事不起作用
在放置表单的文件中,我从以下这一行开始:
include 'captcha.php';
$captcha = Captcha::tryCaptcha(2,4,'#000', '#ffffff');
这是captch构造:
static $do_generate = TRUE;
function __construct($aantal_letters = 2, $aantal_cijfers = 4, $voorgrond = '#000000', $achtergond = '#ffffff') {
session_start();
if (self::$do_generate == TRUE) {
$letters = substr(str_shuffle('ABCDEGHJKLMNPQRSTUVWXYZ'),0 ,$aantal_letters);
$cijfers = substr(str_shuffle('23456789'),0 ,$aantal_cijfers);
$imgbreed = 18 * ($aantal_letters + $aantal_cijfers);
$_SESSION['imgbreed'] = $imgbreed;
$_SESSION['captcha'] = $letters . $cijfers;
$_SESSION['voorgrond'] = $this->hex2rgb($voorgrond);
$_SESSION['achtergond'] = $this->hex2rgb($achtergond);
}
}
所以换句话说,如果静态变量$ do_generate == TRUE,我会将我的东西放在一个会话中
因此,当我发布表单时,验证码正由procesor.php检查
像这样:
if (Captcha::captcha_uitkomst() == TRUE) {
echo "Great";
} else {
echo "Wrong";
}
这是一个验证码功能,用于检查所设置的验证码:
static function captcha_uitkomst() {
if (strcmp($_SESSION['captcha'], strtoupper(str_replace(' ', '', $_POST['captcha-invoer']))) == 0) {
return TRUE;
} else {
echo "test";
self::$do_generate = FALSE;
return FALSE;
}
}
如果我输入正确的验证码,那一切都很好,这可以使回声很好。 如果错误,我会得到错误的回声,
完美,但是....当我返回表单(按退格键返回一个历史记录)以输入正确的验证码时,它将重新生成一个新的验证码。
在类:captcha_uitkomst中,您看到我将self :: do_generate设置为FALSE并且回显“ TEST”为假时有效(仅用于检查)
我究竟做错了什么
当您点击“返回”时,页面将重新加载。 您将获得一个新的验证码。
您的问题的前提从根本上来说是有缺陷的,因为您只是随机地认为这不应该发生,而实际上这完全是设计使然。
如果您可以反复输入错误然后返回,然后再试一次,那将不是一个非常有效的验证码。 任何机器人都可以开始强行强迫它, 并从经验中学习 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.