Как добавить капчу в файл aut.php чтобы после пятого не верного ввода, включалась капча? Или куда её для этого нужно прописать?
ОБСУЖДЕНИЕ
Попрос по капче.
$_SESSION['captcha'] ++; ето в функцию где пишет не правильний пароль...
if(isset($_SESSION['captcha']>5)){ функция вивода каптчи}
if(isset($_SESSION['captcha']>5)){ функция вивода каптчи}
<?php
/*Стартуем сессию*/
session_start();
//например верные данные
$login = 'test';
$pass = 12345;
//$_SESSION['kol_aut'] - Переменная которая будет показывать нам сколько раз юзверь не верно авторизировался
if(!$_POST['login'])
{
/*Генерируем капчу*/
$_SESSION['code'] = rand(0, 9999);
echo '<form method="POST" action="">
Введите login<br/>
<input type="text" name="login"/><br/>
Введите pass<br/>
<input type="text" name="pass"/><br/>';
if($_SESSION['kol_aut']>=5)echo'Введите код<br/>
'.$_SESSION['code'].' <br />
<input type="text" name="code"/><br/>';
echo'<input type="submit" ><br/></form>';
}
else
{
if($_SESSION['kol_aut']<5) $_POST['code'] = $_SESSION['code'];
if($_POST['login'] == $login AND $_POST['pass'] == $pass AND $_SESSION['code'] == $_POST['code'])
{
echo'Делаем с юзером то что нужно после успешной авторизации =))';
/*Удалем переменную колличества проваленных авторизаций*/
unset($_SESSION['kol_aut']);
/*Удалем переменную капчи*/
unset($_SESSION['code']);
}
else
{
echo'Введенные данные не верны!';
/*Пишем в переменку +1 проваленная авторизиция*/
$_SESSION['kol_aut'] = $_SESSION['kol_aut']+1;
/*Удалем переменную капчи*/
unset($_SESSION['code']);
}
}
?>
Это на скорую руку как говорится.. там можно еще проверки добавить ну и вывод ошибок. там с этим сам думаю решиш
Спасибо. Если че тебе в почту напишу, за более подробными данными.
forsim, ICQ - рулит
Ок
Valen, Запакуй пожалуйста этот файл в зип, не могу скопировать.
http://rghost.ru/56657235
А в какой файл это нужно лепить?
хм.. это тебе дал как пример... Можеш просто поставить как работает. Под свой скрипт, подганяй сам
Я понял)
Можно по шаговую инструкцию?
Это легко обойти,т.к ты здесь 1) не проверяешь наличие сессии,значит брутить можно без неё 2) сессию можно удалить и она перезапишется после перезагрузки. Нужно писать в бд,сравнивая ип и к-во попыток.
как не проверяю??
А это тогда что?
if($_POST['login'] == $login AND $_POST['pass'] == $pass AND $_SESSION['code'] == $_POST['code'])
Если значение $_SESSION['code'] не равное $_POST['code'] то засчитывает как ложная авторизация. Возможно не верно тебя понял?
на счет второго, то да, можно позамарачиваться убивать сессию, если сделать на куках, то и с ними нет проблем, в прочем как и в предложенном тобой варианте, с ip... Что мешает подменить ip? +лишние запросы к ДБ. А некоторые провайдеры и вовсе выделяют ip, меняющийся каждое обновление. Например, когда то пользовался в качестве модема - телефоном. Там была SIM от Киевстар, так там при каждом обновление менялся ip.
А это тогда что?
if($_POST['login'] == $login AND $_POST['pass'] == $pass AND $_SESSION['code'] == $_POST['code'])
Если значение $_SESSION['code'] не равное $_POST['code'] то засчитывает как ложная авторизация. Возможно не верно тебя понял?
на счет второго, то да, можно позамарачиваться убивать сессию, если сделать на куках, то и с ними нет проблем, в прочем как и в предложенном тобой варианте, с ip... Что мешает подменить ip? +лишние запросы к ДБ. А некоторые провайдеры и вовсе выделяют ip, меняющийся каждое обновление. Например, когда то пользовался в качестве модема - телефоном. Там была SIM от Киевстар, так там при каждом обновление менялся ip.
forsim, Инструкцию, и пошагово? канэш можна!)))
1) Копиш денюшки
2) Ищеш кодела
3) Делаеш ему заказ
4) Башляеш кодеру за работу
5) Радуешься новой авторизации)))
1) Копиш денюшки
2) Ищеш кодела
3) Делаеш ему заказ
4) Башляеш кодеру за работу
5) Радуешься новой авторизации)))
Valen, Не правильно понял). Не проверяешь существование самой сессии,т.е к пример иф(!иссет($_СЕССИОН['блабла']) ехит('ошибка'); ,если не делать етого,то можно обращаться к скрипту без сессии,и тогда твоя проверка не сработает.
VITAMIN, имееш виду проверять наличие $_SESSION['kol_aut'] ?
тогда уж нужно проверять ее значение, + дополнительно задавать значение если эта переменная не существует.. в общем нужно изобретать велосипедкоторый по сути этого не стоит..
Просто если сделать проверку типа как ты написал, т.е:
if(!isset($_SESSION['kol_aut'])) exit('Ошибка: не существуют сессионные данные');
Тогда вообще ничего не будет работать, так как изначально эта переменная не существует...
Если уж на то пошло, тогда нужно делать что то типа
if(!isset($_SESSION['kol_aut'])) $_SESSION['kol_aut'] = 1;
ну и делать потом проверку...
Но все же, если убивать сессию, $_SESSION['kol_aut'] всегда будет равна 1.. Т.е. смысл тот же что и без проверки существования этой переменной...
Можно сделать проверку существования переменной кода, в принципе да
Т.е. модифицировать запрос
if($_POST['login'] == $login AND $_POST['pass'] == $pass AND $_SESSION['code'] == $_POST['code'])
на
if($_POST['login'] == $login AND $_POST['pass'] == $pass AND $_SESSION['code'] == $_POST['code'] && isset($_SESSION['code']) != FALSE)
тогда уж нужно проверять ее значение, + дополнительно задавать значение если эта переменная не существует.. в общем нужно изобретать велосипедкоторый по сути этого не стоит..
Просто если сделать проверку типа как ты написал, т.е:
if(!isset($_SESSION['kol_aut'])) exit('Ошибка: не существуют сессионные данные');
Тогда вообще ничего не будет работать, так как изначально эта переменная не существует...
Если уж на то пошло, тогда нужно делать что то типа
if(!isset($_SESSION['kol_aut'])) $_SESSION['kol_aut'] = 1;
ну и делать потом проверку...
Но все же, если убивать сессию, $_SESSION['kol_aut'] всегда будет равна 1.. Т.е. смысл тот же что и без проверки существования этой переменной...
Можно сделать проверку существования переменной кода, в принципе да
Т.е. модифицировать запрос
if($_POST['login'] == $login AND $_POST['pass'] == $pass AND $_SESSION['code'] == $_POST['code'])
на
if($_POST['login'] == $login AND $_POST['pass'] == $pass AND $_SESSION['code'] == $_POST['code'] && isset($_SESSION['code']) != FALSE)
Valen, Можно $_СЕССИОН['кол аут'] = нулл; или = труе; , просто обявить переменную,это не велик,а элементарщина от умников,которые попытаются обойти проверку. Кроме того,можно же удалить сессию и она перезапишется наново,т.е примет изначальное значение (без проваленых попыток входа).
хз, по правде, не вижу особого смысла в "$_СЕССИОН['кол аут'] = нулл; или = труе;" Что мешает зайти на форму и отправить запрос нее? Тем более что там есть проверка кода, даже когда тот не вводится.
Почитай предыдущий пост, там дополнил.
Почитай предыдущий пост, там дополнил.
Страница 1 из 2 · Всего записей: 28