Задать вопрос

Как запретить несколько авторизаций?

Создаю браузерную игру на PHP для мобильных телефонов. В игре есть такое понятие, как аккаунт. На этом аккаунте может быть несколько персонажей. Т.е пользователь создает один аккаунт и может с помощью этого аккаунта создавать себе разных персонажей.
Вопрос: Как на PHP можно сделать так, чтобы игрок не смог одновременно играть сразу за двух персонажей? Например, игрок заходит с оперы и с гугл хрома одновременно и шпили-вилит в игре сразу двумя персонажами, а это запрещено.
Собственно, код мне не нужен, хотелось бы услышать способ реализации (как лучше сделать защиту).
Если делать защиту по IP, то игрок может спокойно играть через прокси или с телефона и с компа одновременно. Отпадает.
Значит, нужно привязывать к аккаунту. Сканировать последние заходы за всех персонажей на аккаунте? В общем, я в тупике :(
  • Вопрос задан
  • 432 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
miraage
@miraage
Старый прогер
Предположим, что авторизация создают новую сессиию.

Варианта два:
- убивать все сессии по данному пользователю при авторизации (по мне так, предпочительнее)
- при авторизации проверять наличие текущей сессии - вывести сообщение, если она активна

// UPD

Дополнение к комментарию от Сергей :
Я захожу под персонажем1 с клиента1.
Затем захожу под персонажем2 с клиента2.
При авторизации персонажа2 - клиент1 вылетает с ошибкой.
Ответ написан
bigton
@bigton
Web-программист
Почему просто нельзя хранить в таблице ID текущего персонажа? То есть просто таблица соответствий account_id-current_character_id. По всему проекту использовать $current_character_id. И получается не важно с какого устройства ты зашел, всегда будет грузиться установленный текущим персонаж и только для него буду выполнятся все действия.

Авторизации тут вообще за уши притянуты.
Ответ написан
Комментировать
Neuroware
@Neuroware
Программист в свободное от работы время
При авторизации генерировать Токен, уникальную строку, писать ее в БД, все запросы обрабатывать только при указании действительного токена, т.к. такой токен будет только 1, потому как старый стирается при новой авторизации проблема становится не актуальной
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы