Защита от двойного логина

Bitterman

Новичок
Защита от двойного логина

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

P.S. Статьи по авторизации читал - там лишь простейшие вещи - есть логин/пароль - пользователь ввел - сравнили - дали доступ - записали в сессию.
 

440hz

php.ru
пользователь закончил работу с сайтом и закрыл браузер
обсуждалось миллионы раз.
таймаут и после достижения его чистка нужных записей. ибо все другое можно подделать, обойти, обмануть и т.д.
либо кнопка "закончить работу"


как пример:

- обрыв связи
- отключка кук, java и т.д.
- открытие множества окон
- переход в текущем броузере на друой сайт (окно-то не закрывается при этом)
- проход через проксю
 

Фанат

oncle terrible
Команда форума
вообще-то, стандартное решение на этом форуме, которое первым, на моей памяти, предложил Forjest - просто выкидывать предыдущего клиента, вошедшего под этим логином. Как сделано в айсикью, например
таким образом всегда будет сидать только один, и никаких проблем с входом не будет
 

Bitterman

Новичок
Спасибо за ответы. В целом, насколько я понял, надежного механизма отслеживания того, что пользователь закончил работу с сайтом нет. Что ж, буду выбирать из двух вариантов - либо новому пользователю придется ждать некий тайм-аут, либо наоборот, у нового пользователя преимущественное право (вариант Фаната).
 

С.

Продвинутый новичок
А что это за "новый" и "старый" пользователи? Разве это не один и тот же пользователь?
 

С.

Продвинутый новичок
Один логин у разных пользователей?
 

С.

Продвинутый новичок
Ага, Мупсик! Я даже писать умею!

Суть вопроса в следующем: на сайте есть регистрация, надо сделать механизм, который бы не позволял пользователю зайти под логином, если в данный момент под этим логином зашел другой пользователь.
 

Фанат

oncle terrible
Команда форума
ну вот ты и прочитал ответ на свой вопрос.
свободен
 

С.

Продвинутый новичок
Не-е. Я до такой степени читать не умею. Так и не смог прочитать, как ДРУГОЙ пользователь может зайти под этом же логином?
 

Фанат

oncle terrible
Команда форума
ну, не смог и не смог.
в другой раз получится.

если у тебя какие-то проблемы с пхп - можешь начать тему и задать в ней свой вопрос.

а в чужой тупить не надо.
тут и без тебя хватает
 
Сверху