Ограничение одновременного доступа

elven

Новичок
Ограничение одновременного доступа

У меня есть защищенная область на сайте. Доступ реализован через сохраниение cookies при логине и проверке его в других страницах. Данные в cookies зашифрованы. Возможно и не самый лучший способ, но вроде бы работает нормально.

Захотелось его улучшить. Как сделать так чтобы когда 1 пользователь зашел по своему логину, никто более не смог зайти по этому логину, пока 1-й не вышел из защищенной зоны? На данный момент система допускает несколько одновременнных подключений по одному логину.

Это реализуется через сессии? Может ли кто объяснить как это можно реализовать?
 

Garret

Кто здесь?
Храни сессию текущего пользователя в таблице. При логине проверяй, нет ли такого.
 

Фанат

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

kav78

Новичок
я так думаю это надо ковырять в настройках апача, но могу ошибаться
 

elven

Новичок
Спасибо. Про выкидывание что то не додумался, идея хорошая.

Еще один вопрос. Вот предположим я залогинился, создан идентификатор сессии, он записывается в базу вместе с логином. Далее происходит обрыв или выход. НО запись то в базе остается. КАк там удалить, если сессии уже нету? Извиняюсь, если я несу полную ахинею, просто в сессиях я еще пока не разбираюсь
 

Garret

Кто здесь?
+ к этому, если юзаешь куки, то конечно хранить его айпишник и какие то параметры окружения. Потому что ничто не мешает пользователю поделится своими куками.
 

alexhemp

Новичок
Записывайте в базу дату-время последней операции данного юзера и идентификатор его сессии.

При нажатии кнопки "выход" отмечайте что вышел, стирая эти дату-время.

В течении определенного времени (скажем 10-15 минут) не пускайте никого с другим идентификатором сессии.
 

elven

Новичок
А если он вышел не нажав на кнопку выход? То тогда проверка на истечение 15 минут, т.е. получается блокировка на 15 минут?
 

bgm

 
Фанат
Когда этот вопрос поднимается на форуме, обычно рекомендуют не ограничить доступ остальным залогинившимся, а делать, как в айсикью - выкидывать того, кто был залогинен раньше.
Выкидывать? А если, к примеру, в этот момент идёт загрузка файлов?

P.S. Хотя, в общем, это дело прописанной политики доступа.
 
Сверху