ОБСУЖДЕНИЕ

Помогите реализовать $_SESSION

17 сообщений1 просмотровЗакрыта
#1
Короче:
Как лучше реализовать ограничение попыток ввода неправильного пароля ?
Пример: если клиент 5 раз при ввёл неправильный пароль, то ему присваивать $_SESSION['moshennik']=1; и после этого клиент не имеет права вводить пароль в течении 5 минут. Правильно ли? Или лучше использовать что-то другое?



Помоему так?
if(сессия > 3){
запрос капчи
if(капча правильная){
if(проверка пароля и логина, запрос к базе данных){
авторизован впускаем, и удаляем сессию
}else{
не авторизован, делаем сессии ++
}
}else{
капча не правильная
}
}else{
if(проверка пароля и логина, запрос к базе данных){
авторизован впускаем, и удаляем сессию
}else{
не авторизован, делаем сесии ++
}
}
#2
Насчет $_SESSION прикольная вещь.
Все верно если честно пять раз не ввел и все мошенник :-D
#3
Помогите написать этот кусочек
#4
khujand, Ну я хз вообщем сейчас попробую
#5
khujand, Не шляпа какаятогг
#6
PHP

<?
if($_POST['password'] == $data['password']){
header("Location: index.php"); /* все правильно, отправляем на глявную */
unset($_SESSION['error_auth']);
} else {
if($_SESSION['error_auth'] < 5) /* если неудачных авторизаций менее 5*/
$_SESSION['error_auth']++;
else { /* иначе обнуляем и присваиваем мошенника */
$_SESSION['moshennik'] = 1;
unset($_SESSION['error_auth']);
}
}
?>

#7
Через count++ можно?
#8
LVC2, А где запрет мошеннику на 5 минут?
#9
khujand, ну там где форма отправки укажи
PHP

if(empty($_SESSION['moshennik'])){
    /* форма отправки */
}else echo 'Ошибка, количество попыток исчерпано';
#10
khujand, иначе обнуляем и присваиваем мошенника



ну так допиши условие , что там запас в БД или еще чего
#11
PHP

<?
if(!$_SESSION['timeclose'] || $_SESSION['timeclose'] < time() - 300){
if($_POST['password'] == $data['password']){
header("Location: index.php"); /* все правильно, отправляем на глявную */
unset($_SESSION['error_auth']);
} else {
if($_SESSION['error_auth'] < 5) /* если неудачных авторизаций менее 5*/
$_SESSION['error_auth']++;
else { /* иначе обнуляем и присваиваем мошенника */
$_SESSION['timeclose'] = time();
$_SESSION['moshennik'] = 1;
unset($_SESSION['error_auth']);
}
}
}else echo 'Ошибка, лимит ввода исчерпан';


?>
#12
Удалил сессию и наново подбираешь. Дырявый способ.
#13
VITAMIN, А если написать в БД такой:
<?



$ipp = $_SERVER['REMOTE_ADDR'];

$time = time();



$in = mysql_query("SELECT * FROM `avtoriz` WHERE `ip` = '$ipp' LIMIT 1");

$in1 = mysql_fetch_array($in);



if($in1['time2']>=$time){

mysql_query("UPDATE avtoriz SET kol = '0' WHERE `ip` = '$ipp';");

echo '<div class="title">Авторизация | Ошибка </div>';

echo '<div class="podmenu"><center><b>Превышен лимит попыток авторизации.<br /> Повторить попытку вы сможете через <font color="green">'.kikt($in1['time2']).'</font></b></center></div>';

require_once ('system/footer.php');

exit();

}
#14
Если не ошибаюсь, идентификатор сессии находится в куках юзера.. Если очистить их -- счетчик "мошенника" сброшен.
#15
может на куках лучше?
#16
Ну и зачем старые темы поднимать? Новички не нужно таким образом набивать посты.
#17
Тему закрыл Mayk!
Причина: ###