У кого есть 5 минут, помогите с PHP, плиз.
Есть старая графическая капча, которую боты имеют на 1-2-3.
Решил поменять на текстовую. Будет задан вопрос, ответ на который знают только пользователи, например фамилия "Иванов". Ну и нужно проверить её после ввода юзером в поле.
Только фамилия может быть написана в транслите и разным регистром.
Сейчас имею это:
function prepare_captcha() {
if (extension_loaded("gd")) {
if (!session_id()) {
session_start();
}
}
}
function show_captcha_image() {
if (extension_loaded("gd")) {
global $CAPTCHA_NUM;
$CAPTCHA_NUM=mt_rand(0,100000);
$tmp = "<img src=\"kcaptcha/index.php?".session_name()."=".session_id()."&rnd=".mt_rand(0,1000000)."&knum=".$CAPTCHA_NUM."\" border=\"0\" alt=\""._KCAPTCHA."\">";
return $tmp;
}
}
function show_captcha_field() {
global $CAPTCHA_NUM;
if (extension_loaded("gd")) {
$tmp = "
<input type=\"text\" name=\"keystring\" size=\"20\" maxlength=\"10\" autocomplete=\"off\">
<input type=\"hidden\" name=\"knum\" value=\"".$CAPTCHA_NUM."\">
";
return $tmp;
}
}
function show_captcha_text() {
if (extension_loaded("gd")) {
$tmp = "<strong>"._KCAPTCHA.": </strong> ";
return $tmp;
}
}
function valid_captcha() { //return 1 if valid or 0 if invalid
if (isset ($_POST['knum'])) {
$knum=intval($_POST['knum']);
}
else {
$knum=0;
}
if(isset($_SESSION['captcha_keystring_'.$knum]) && $_SESSION['captcha_keystring_'.$knum] == $_POST['keystring']) {
foreach($_SESSION as $k=>$v) {
if (strpos($k,'captcha')!==false) {
unset($_SESSION[$k]);
}
}
return 1;
}
else {
foreach($_SESSION as $k=>$v) {
if (strpos($k,'captcha')!==false) {
unset($_SESSION[$k]);
}
}
return 0;
}
}