За последние 24 часа нас посетили 34949 программистов и 1757 роботов. Сейчас ищут 848 программистов ...

Как делается система бана

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

  1. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.504
    Симпатии:
    283
    Можно и так. Проще проверять при обработке формы записи.
     
  2. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Формы записи бана? Не понял какой формы.
     
  3. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.504
    Симпатии:
    283
    Любой записи в базу. Есть в санкциях - не пишем.
     
  4. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    939
    Симпатии:
    145
    Сначала нужно полностью описать алгоритм, потом уже городить код.
     
  5. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    алгоритм пишется в том случае если понимаешь как это реализовать
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.817
    Симпатии:
    1.333
    Адрес:
    Лень
  7. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    939
    Симпатии:
    145
    Хорошо, опишите реакцию продукта для следующих кейсов:
    - не забаненый пользователь авторизуется;
    - забаненый пользователь авторизуется;
    - авторизованный пользователь банится;
    - забаненый авторизованный пользователь разбанивается.
     
  8. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.504
    Симпатии:
    283
    Пользователю отправляется уведомление - наложено то-то, заканчивается тогда-то.
    Если пользоваль что-то пытается запостить, ему отбой, с описанием причины. Например одно сообщение в час, то есть нужно еще и время последнего сообщения извлекать.
    Если бан полный, то не надо.
    --- Добавлено ---
    Если же ограничение на просмотр чего-нибудь, то немног по-другому.
     
  9. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    описать как выглядела проверка для этих строк?
     
  10. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    939
    Симпатии:
    145
    Опишите русскими словами, какова должна быть реакция продукта в данных случаях. Какие ещё строки?
    Поиграю в системного аналитика между Вами (как заказчиком продукта) и Вами (как исполнителем заказа). ))
     
    mkramer нравится это.
  11. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    1) проверяем пользователя на существования в бд, если существует разрешаем вход
    2) проверяем пользователя не стоит ли у него бан, если проверка прошла проверяем на существования в бд
    3) вставляем запись в таблицу банс, если пользователь нарушил, баним пользователя
    4) проверяем время разбана, если время истекло разбаниваем забаненого авторизованного пользователя
    Надеюсь я вас правильно понял, что вы от меня хотите.
     
  12. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    939
    Симпатии:
    145
    Увы и ах (
    Вы описали внутреннее частичное понимание со стороны разработчика на сумбурный кейс.
    Пожалуйста, распишите, что должен делать продукт в каждом из случаев (если где-то будут одни и те же шаги, нестрашно, копипастите).
     
  13. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    опишите для одной строки, пусть будет даже для другого примера это описание, а то я вас не понимаю, что за слоганы, что от меня хотите. Спасибо.
     
  14. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    @_ne_scaju_, как проявляется бан? Это же не просто статус (плюс время). Наверное, при бане пользователю запрещено выполнять какие-то действия. Вплоть до возможности входа под учетными данными забаненного акка.
     
  15. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    ну это да логично, ну вопросы то звучали иначе)
     
  16. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    только не понять, зачем type тип бана?) если юзер попал в таблицу, его uid уже находится то значит он в бане :D
     
  17. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.504
    Симпатии:
    283
    Ограничения бывают всякие.
    Например - одно сообщение в час. Запрет комментировать новости с особой пометкой. Запрет на доступ в некоторые разделы сайта. Прочее.
    Естественно, если такой градации нет, то эта колонка лишняя.
    И конечно же, вся система ограничений имеет смысл, если к контенту имеют доступ только авторизованные пользователи.
     
    #42 Drunkenmunky, 29 май 2021
    Последнее редактирование: 29 май 2021
  18. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    а если пользователь авторизован, чаще всего идет запрет на добавления записей например в пост новость, или ограничивают в плоть до запрета входить в кабинет свой? Как чаще всего, чтобы суть понимать нужно мне это поле или не нужно.
     
  19. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.504
    Симпатии:
    283
    Не знаю, у меня такой статистики нет.
    Вас выше спрашивали, чего вы, собственно, пользователю ограничить хотите?
    Я ответа не видел.
     
  20. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Странные у тебя вопросы. Всё от задачи зависит. Если делаешь проект на заказ - делаешь так, как согласовано с заказчиком. Если делаешь проект для себя, то делаешь, как душе угодно. Как сам считаешь правильно. Всё делается, и запрет определённых действий, и полный запрет аутентификации, всё по разному. Какая тебе разница, как чаще? У тебя есть проект, у проекта есть какая-то цель. Или цель поиграться с разными видами бана чисто для прикола? Ну так поиграйся.
     
    don.bidon нравится это.
  21. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    есть проект, который делаю для себя, пока чисто играюсь с ним, вот и не знаю что делать лучше, наверное просто закрывать банить к определенным действиям да и все.
    --- Добавлено ---
    а я вопросов не понял, ограничить скорее хочу, запрет писать комменты под постами, например если уж через чур нарушил тогда запрет вход в кабинет.
     
  22. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.504
    Симпатии:
    283
    Ну, тогда без поля `type` не обойтись.
    Нужна отдельная функция или подключаемый в нужном месте(обработка формы авторизации и формы добавления комментариев) скрипт, проверяющая состояние пользователя в таблице с ограничениями.
    Кроме того, нужен отдельный код для принудительного закрытия всех существующих сессий пользователя, при наложении такой санкции, то есть где-то нужно хранить их ID.
     
    #47 Drunkenmunky, 29 май 2021
    Последнее редактирование: 29 май 2021
  23. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    смысле где то их id хранить есть таблица пользователей есть таблица баннов, и там и там хранится id пользователя. А еще куда предлагаете сохранить id?
     
  24. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.504
    Симпатии:
    283
    Сессии имеют свой уникальный ID. Обычно они хранятся в файлах в специальной директории.
    В зависимости от сложности используемого способа авторизации, у одного пользователя их может быть несколько.
    Как правило, сверка паролей\логинов, и прочего, происходит на этапе авторизации, и далее вся необходимая информация извлекается из сессии.
    То есть. Все наложенные санкции касаемые доступа в аккаунт, вступят в силу только после закрытия сессии. И если это не сделать принудительно(удалить файл(ы) сессии), то придется ждать пока пользователь не нажмет "выход".
     
  25. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    ок, разве когда я поставлю пользователю бан, при этом очищу сессию по его uid при обновлении страницы он уже будет не авторизован. Обязательно удалять файлы, или уничтожения сессии помогает?
    --- Добавлено ---
    еще вопрос такой, делаю для бана делаю три поля:
    login: end_ban: comment_ban а вот еще поле type (будет в виде массива, где будет перебираться, всякие ограничения) - поле это тоже должно присутствовать?