Разрешить только один сеанс одновременно
Я хотел бы сделать свой сайт, чтобы разрешить только одну сессию за раз. Например, скажем, у пользователя есть вход на мой сайт в firefox, если пользователь снова войдет в другой браузер, такой как opera на том же компьютере или другом компьютере, сеанс в firefox будет уничтожен. Однако сеанс на firefox остался, если он остается как один сеанс. Могу я узнать, как я могу это сделать? Я использую php и apache. Спасибо.
с уважением. Бенджамин!--1-->
5 ответов
Я предлагаю вам сделать что-то вроде этого:
предположим, когда пользователь " A "впервые входит в "Com_1". Сохраните уникальный код в базе данных для этого сеанса и то же самое с сеансом пользователя.
в то же время, если он (пользователь "A") снова входит в систему на "com_2", затем проверьте его статус в базе данных и обновите уникальный код в базе данных.
снова назад если тот же пользователь (пользователь "A") обновляет страницу на "com_1", нам все, что вам нужно сделать, это проверьте уникальный код из сеанса и сопоставьте его с базой данных, он наверняка не будет совпадать, затем выйдите из системы и уничтожьте сеанс.
для сохранения пользователя loggedin, даже если браузер закрыт, вы можете сохранить файл cookie в браузере и повторно сгенерировать сеанс соответственно.
надеюсь, что это помогает. Спасибо.
вы можете использовать следующий алгоритм
- создайте целое поле в databse userLoggedInCount
- при каждом входе в систему увеличьте этот флаг и сохраните результат в сеансе.
- при каждом запросе проверить значение в БД и в сессии, и если в сессии меньше, чем в ДБ,
invalidate()
сеанс и уменьшение значения в базе данных - когда сессия уничтожается уменьшить значение а также
кредиты Божо, потому что он опубликовал это, отвечая на вопрос здесь
храните центральную таблицу базы данных или текстовый файл того, кто вошел в систему в данный момент. Если пользователь уже вошел в другой сеанс, аннулируйте этот сеанс, установив флаг "logged in" равным false.
Я думаю, вам придется сделать что-то вроде этого :
- добавьте столбец "last_session_id" в таблицу пользователя
- когда пользователь входит в систему, обновите его поле last_session_id с его текущим идентификатором сеанса
- на каждой странице, если у пользователя есть аутентифицированный сеанс, проверьте, равен ли идентификатор сеанса записанному в вашей базе данных. Если нет, уничтожьте этот сеанс.
сохранить IP пользователей= > пары SESSION_ID в базе данных. Когда пользователь пытается загрузить вашу страницу, вы должны сравнить фактическую пару IP=>SESSION_ID, а затем разрешить/запретить, если пара в порядке / отличается.