Bitterman
Новичок
Защита от двойного логина
Всем доброго времени суток!
Суть вопроса в следующем: на сайте есть регистрация, надо сделать механизм, который бы не позволял пользователю зайти под логином, если в данный момент под этим логином зашел другой пользователь.
Механизм работы в принципе понятен - при логине в базу пишем время, соответственно оно обновляется при каждой перегрузке страницы. Проблема в в том, как сделать механизм освобождения логина. Во-первых, понятно, что надо контролировать время, когда он был заблокирован. То есть, если пользователь хочет зайти под логином, метка времени для которого была проставлена более какого-то времени назад (например, более 20 минут назад), то вход надо запретить. Но как отловить то, что пользователь закончил работу с сайтом и закрыл браузер.
Мне в голову приходят 2 варианта. Первый, это ставить javascript на закрытие окна, который бы в свою очередь вызывал пхп-скрипт, где логин освобождался бы. Но тут возникает проблема, если пользователь во время сессии откроет второе (третье, четвертое и т. д.) окно. Второй вариант - не отслеживать никак. То есть другому пользователю в любом случае придется ждать еще 20 минут (например), а текущего пользователя отслеживать по каким-либо параметрам и предоставлять ему доступ вне зависимости от количества прошедшего времени. Отслеживать
можно по кукам, IP, параметрам браузера. Тут вопрос в том, насколько однозначно можно определить таким образом пользователя? Куки могут быть отключены, доступ из локальной сети через прокси, браузеров - счетное количество. Наверняка ж есть какой-то стандартный способ.
P.S. Статьи по авторизации читал - там лишь простейшие вещи - есть логин/пароль - пользователь ввел - сравнили - дали доступ - записали в сессию.
Всем доброго времени суток!
Суть вопроса в следующем: на сайте есть регистрация, надо сделать механизм, который бы не позволял пользователю зайти под логином, если в данный момент под этим логином зашел другой пользователь.
Механизм работы в принципе понятен - при логине в базу пишем время, соответственно оно обновляется при каждой перегрузке страницы. Проблема в в том, как сделать механизм освобождения логина. Во-первых, понятно, что надо контролировать время, когда он был заблокирован. То есть, если пользователь хочет зайти под логином, метка времени для которого была проставлена более какого-то времени назад (например, более 20 минут назад), то вход надо запретить. Но как отловить то, что пользователь закончил работу с сайтом и закрыл браузер.
Мне в голову приходят 2 варианта. Первый, это ставить javascript на закрытие окна, который бы в свою очередь вызывал пхп-скрипт, где логин освобождался бы. Но тут возникает проблема, если пользователь во время сессии откроет второе (третье, четвертое и т. д.) окно. Второй вариант - не отслеживать никак. То есть другому пользователю в любом случае придется ждать еще 20 минут (например), а текущего пользователя отслеживать по каким-либо параметрам и предоставлять ему доступ вне зависимости от количества прошедшего времени. Отслеживать
можно по кукам, IP, параметрам браузера. Тут вопрос в том, насколько однозначно можно определить таким образом пользователя? Куки могут быть отключены, доступ из локальной сети через прокси, браузеров - счетное количество. Наверняка ж есть какой-то стандартный способ.
P.S. Статьи по авторизации читал - там лишь простейшие вещи - есть логин/пароль - пользователь ввел - сравнили - дали доступ - записали в сессию.