ОБСУЖДЕНИЕ

Попрос по капче.

28 сообщений0 просмотровОткрыта
#1
Как добавить капчу в файл aut.php чтобы после пятого не верного ввода, включалась капча? Или куда её для этого нужно прописать?
#2
$_SESSION['captcha'] ++; ето в функцию где пишет не правильний пароль...
if(isset($_SESSION['captcha']>5)){ функция вивода каптчи}
#3
PHP

<?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']);
}
}

?>

#4
Это на скорую руку как говорится.. там можно еще проверки добавить ну и вывод ошибок. там с этим сам думаю решиш
#5
Спасибо. Если че тебе в почту напишу, за более подробными данными.
#6
forsim, ICQ - рулит
#7
Ок
#8
Valen, Запакуй пожалуйста этот файл в зип, не могу скопировать.
#9
http://rghost.ru/56657235
#10
А в какой файл это нужно лепить?
#11
хм.. это тебе дал как пример... Можеш просто поставить как работает. Под свой скрипт, подганяй сам
#12
Я понял)
#13
Можно по шаговую инструкцию?
#14
Это легко обойти,т.к ты здесь 1) не проверяешь наличие сессии,значит брутить можно без неё 2) сессию можно удалить и она перезапишется после перезагрузки. Нужно писать в бд,сравнивая ип и к-во попыток.
#15
как не проверяю??
А это тогда что?
if($_POST['login'] == $login AND $_POST['pass'] == $pass AND $_SESSION['code'] == $_POST['code'])

Если значение $_SESSION['code'] не равное $_POST['code'] то засчитывает как ложная авторизация. Возможно не верно тебя понял?
на счет второго, то да, можно позамарачиваться убивать сессию, если сделать на куках, то и с ними нет проблем, в прочем как и в предложенном тобой варианте, с ip... Что мешает подменить ip? +лишние запросы к ДБ. А некоторые провайдеры и вовсе выделяют ip, меняющийся каждое обновление. Например, когда то пользовался в качестве модема - телефоном. Там была SIM от Киевстар, так там при каждом обновление менялся ip.
#16
forsim, Инструкцию, и пошагово? канэш можна!)))
1) Копиш денюшки
2) Ищеш кодела
3) Делаеш ему заказ
4) Башляеш кодеру за работу
5) Радуешься новой авторизации)))
#17
Valen, Не правильно понял). Не проверяешь существование самой сессии,т.е к пример иф(!иссет($_СЕССИОН['блабла']) ехит('ошибка'); ,если не делать етого,то можно обращаться к скрипту без сессии,и тогда твоя проверка не сработает.
#18
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)
#19
Valen, Можно $_СЕССИОН['кол аут'] = нулл; или = труе; , просто обявить переменную,это не велик,а элементарщина от умников,которые попытаются обойти проверку. Кроме того,можно же удалить сессию и она перезапишется наново,т.е примет изначальное значение (без проваленых попыток входа).
#20
хз, по правде, не вижу особого смысла в "$_СЕССИОН['кол аут'] = нулл; или = труе;" Что мешает зайти на форму и отправить запрос нее? Тем более что там есть проверка кода, даже когда тот не вводится.
Почитай предыдущий пост, там дополнил.
Страница 1 из 2 · Всего записей: 28