За последние 24 часа нас посетили 17383 программиста и 1725 роботов. Сейчас ищут 1604 программиста ...

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

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

  1. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    Нет.
    Альтернатива - проверять состояние при каждом обновлении любой страницы, где используется авторизация, где вы хотите ограничить доступ забаненному.
    Это поле?
     
  2. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    вообще поле для формы заполнения, где заполняется бан, выбираем время, пишем причину бана, и возможно поле должно быть type где описан массив запретов на ту или иную страницу,.
     
  3. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    Зачем там хранить массив. Храните его идентификатор: 0 - предупреждение, 1 - ограничение, 2 - бан и тд
     
  4. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    ок, мне же надо чтобы эти 1, 2, 3 попали в базу через select поле прогнать?
     
  5. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    Ммм... Да?
     
    _ne_scaju_ нравится это.
  6. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    странно почему я этот вопрос задал :D:rolleyes:
     
  7. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    вопрос: когда установил пользователю бан, и пытаюсь поставить ему снова бан, стоит ли проверить а не стоит у него бан, или сделать обновления записи если обнаружено что стоит бан, при проверке, как делаете вы?)
     
    #57 _ne_scaju_, 31 май 2021
    Последнее редактирование: 31 май 2021
  8. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    Ну, так вы ему почистите биографию. Вы установили временной промежуток, указали причину и тип.
    Сохраните для истории.
     
  9. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    не понял какую историю ему почистить? Вот например бан поставил на запрет писать сообщения под постом (это как пример), ему нужно чистить биографию?
     
  10. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    Криминальную.
     
    _ne_scaju_ нравится это.
  11. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    ржу :D мне лучше загадками не говорить, я понимаю все буквально;)
     
  12. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    Обновив запись об ограничении, вы сотрете историю нарушений пользователем каких-то правил.
    Нужно не обновлять существующую, а добавлять новую.
     
  13. _ne_scaju_

    _ne_scaju_ Старожил

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

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    Нет. За это должны отвечать "роли"
    Оставить. Использовать для анализа поведения конкретно этого пользователя на сайте.
    Это как анамнез.
     
    _ne_scaju_ нравится это.
  15. _ne_scaju_

    _ne_scaju_ Старожил

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

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    Элементарно. По времени действия, типу и тд.
     
  17. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    ок понял, буду делать, приступаю к разработке)
     
  18. _ne_scaju_

    _ne_scaju_ Старожил

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

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    Придется начать издалека.
    Что вы знаете об объединении таблиц?
     
  20. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    например join) объединять таблицы запросы из двух таблиц сравнивать, знаю left join, left join iner join но в них путаюсь по каким принципам база с ними играется.
     
  21. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    https://habr.com/ru/post/448072/
     
    _ne_scaju_ нравится это.
  22. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    попробую соорудить, проверку, спасибо.
     
  23. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    хорошо, запрос сделал не помню уместно писать еще условие WHERE вроде как да:
    PHP:
    1.         $sql = $this -> db -> sel('SELECT `t1`.`user_password`, `t2`.`type_ban`, `t2`.`start_ban`, `t2`.`end_ban`
    2.                                    FROM `users` `t1`
    3.                                    LEFT JOIN `users_banned` `t2`
    4.                                    ON (`t1`.`uid` = `t2`.`uid`)
    5.                                    WHERE `t1`.`user_login` = ?', [ $l ], false );
    что по поводу сравнения даты как она делается, нужно сравнивать текущую дату с датой окончания?
     
    #73 _ne_scaju_, 2 июн 2021
    Последнее редактирование: 2 июн 2021
  24. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    И датой начала. Если меньше одного и больше другого.
     
  25. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    ага спасибо, попробую, для текущей даты можно воспользоваться функцией data()?
    Нужно ли использовать узнавать временную зону пользователя date_default_timezone_set('UTC') чтобы делать проверку даты?