За последние 24 часа нас посетили 16946 программистов и 1651 робот. Сейчас ищут 867 программистов ...

Блокировать на время

Тема в разделе "PHP для новичков", создана пользователем VLK, 28 сен 2015.

  1. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Вопрос такая, смотрите пользователь вводит логин и пароль, если не верно необходимо блокировать повторный ввод допустим на минуту, ну что бы он повторно смог авторизоваться только через минуту, как то так.

    Но основная проблема в том, что пользователь может не в ручную авторизоваться, а через программу, которая будет просто отправлять POST запрос с данными, без всяких браузеров.

    как я понимаю сессии тут не помогут?
    sleep() тоже не канает.

    выходит только через БД, надо записывать IP в базу и время неудачно авторизации и проверять каждый раз или можно как то еще?
    Очень уж не хочется с БД связываться в этом вопросе.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    mysql + транзакция
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    транзакция тоже не нужна. Тупо сохраняй айпишники =)
     
  4. kakadyi

    kakadyi Новичок

    С нами с:
    9 сен 2015
    Сообщения:
    25
    Симпатии:
    0
    Я вот тоже думал на днях об этом. Почитал, подумал - лучше через БД. Т.к. сессии и куки не катят как - раз из-за прог.
     
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    еще можно на уровне вебсервера это делать - в nginx на lua прекрасно такой функционал пишется (в апачи можно на рерайтере сделать но имхо рерайтер не должен заниматься такой фигней). ну или на уровне сервера "физического" - fail2ban

    Добавлено спустя 4 минуты 14 секунд:
    ну и как бы такой смешной момент... а зачем дергать скуэль бедную для таких задач? redis или memcache всяк быстрее будут работать
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а как нгинксу сообщать об этом?
     
  7. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    пришел пост-запрос от клиента, нгинкс смотрит айпишник и время в "базе". если есть и меньше минуты (по задаче тс) - завершение обработки со статусом 403 (запрещено). если нет записи или больше минуты - ничего не делаем и продолжаем обработку запроса обычным образом - клиент может попробовать авторизоваться.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    т.е. скрипт на луа тупо лезет в бд и всё? ну да, логично.
     
  9. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    смотря какая бд. есть собственная хэштаблица, есть клиенты к рэдису или мемкэшу. если уж очень надо - есть клиент и к мускулу.
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    http://habrahabr.ru/post/267955/ подержка js в nginx однако

    Добавлено спустя 21 секунду:
    писать можно прямо в конфигах, е6ать-колотить
     
  11. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    я...бать...