Цитата (killer8080 @ 20.10.2015 - 10:40) |
где именно уточни пожалуйста, в коде отдающем страницу, или в коде генерирующем капчу? |
session_start();
if($_POST['capthca'] == $_SESSION['code'])
{
// код авторизации
}
else
{
echo "<H3>Введен неверный код с картинки!</H3>";
}
$_SESSION['code']=rand(100,999);
Цитата (arbuzmaster @ 20.10.2015 - 11:01) |
В коде отдающем страницу, что бы не было возможности проводить подбор пароля без кода капчи. |
if (!empty($_POST['capthca']) && !empty($_SESSION['code']) && $_POST['capthca'] == $_SESSION['code']) {
// valid code
} else {
// invalid code
}
unset($_SESSION['code']); // исключаем повторное использование
if($_POST['capthca'] == $_SESSION['code'])
Цитата (arbuzmaster @ 20.10.2015 - 11:43) |
Я просто не могу понять логику, где генерируется $_SESSION['code'] (то есть код капчи) |
Цитата (arbuzmaster @ 20.10.2015 - 11:43) |
если отключить куки, как мне кажется условие не сработает, так как $_SESSION['code'] не существует, просто выдаст ошибку в логах? |
var_dump(''==null); // true
Цитата (killer8080 @ 20.10.2015 - 12:24) |
Правильно код генерить в коде самой капчи, хотя бы потому что нужно иметь возможность её обновлять, если пользователь не может разобрать надпись например. Проверка так |
//Если генерировать код капчи здесь, то $_POST['capthca'] и $_SESSION['code'] не сойдутся
if (!empty($_POST['capthca']) && !empty($_SESSION['code']) && $_POST['capthca'] == $_SESSION['code']) {
// valid code Если здесь, то они тоже не сойдутся
} else {
// invalid code Если здесь, то они тоже не сойдутся
}
unset($_SESSION['code']); // исключаем повторное использование
if (!empty($_POST['capthca']) && !empty($_SESSION['code']) && $_POST['capthca'] == $_SESSION['code'])
if($_POST['capthca'] == $_SESSION['code']) // 2 отличия
unset($_SESSION['code']); // удаление
$_SESSION['code']=rand(100,999); // перезапись