我正在開發Captcha課程,我即將完成,有一件事情不起作用PHP Static var not working
在我放置表單的文件中,我從這一行開始:
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";
}
這是驗證碼功能檢查etered圖形驗證碼:
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你看,我做了自我:: do_generate FALSE 和回聲「TEST」的作品時,它的錯誤,(只是爲了檢查)
我在做什麼錯
爲什麼你認爲驗證碼**不應該在點擊'back'時重新生成? –
由於圖像是由php與imagettftext創建的,因此不會刷新,因此它會使用新生成的代碼顯示舊圖片。這是錯誤的 –