Позвольте одну сессию только за один раз

Я хотел бы сделать свой веб-сайт для разрешения только одной сессии за один раз. Например, позвольте, говорят, что у пользователя есть вход в систему моего веб-сайта на Firefox, если пользовательский вход в систему снова другого браузера как опера на том же компьютере или другом компьютере, сессия на Firefox будет уничтожена. Однако сессия на Firefox осталась, если это остается как одна сессия. Я могу знать, как я могу сделать это? Я использую php и апача.Спасибо.

С уважением. Benjamin

8
задан davidlee 2 July 2010 в 09:23
поделиться

5 ответов

Я предлагаю вам сделать что-то вроде этого:

Предположим, когда пользователь «A» входит в систему «Com_1» в первый раз. Сохраните уникальный код в базе данных для этого сеанса, а также для пользовательского сеанса.

Между тем, если он (пользователь «A») снова входит в систему на «com_2», то проверьте его статус в базе данных и обновите уникальный код в базе данных.

снова назад, если тот же пользователь (пользователь «A») обновит страницу на «com_1», нам все, что вам нужно сделать, это проверить уникальный код из сеанса и сопоставить его с базой данных, это точно не совпадение, затем выйдите из системы и уничтожьте сеанс.

Для сохранения входа пользователя в систему, даже если браузер закрыт, вы можете сохранить файл cookie в браузере и соответственно повторно сгенерировать сеанс.

Надеюсь, это поможет. Спасибо.

11
ответ дан 5 December 2019 в 07:33
поделиться

Вы можете использовать следующий алгоритм

  1. для создания целочисленного поля в базе данных userLoggedInCount
  2. При каждом входе в систему увеличивайте этот флаг и сохраняйте результат в сеансе.
  3. При каждом запросе проверяйте значение в базе данных и значение в сеансе, и если значение в сеансе меньше значения в БД, недействительно () сеанс и уменьшает значение в базе данных
  4. всякий раз, когда сеанс разрушается, также уменьшайте значение

Кредит Божо, потому что он опубликовал это, отвечая на вопрос здесь

5
ответ дан 5 December 2019 в 07:33
поделиться

Сохранить пары IP пользователя => SESSION_ID в базе данных. Когда пользователь пытается загрузить вашу страницу, вы должны сравнить фактическую пару IP => SESSION_ID, а затем разрешить / запретить, если пара в порядке / отличается.

0
ответ дан 5 December 2019 в 07:33
поделиться

Хранить в центральной базе данных таблицу или текстовый файл, в котором указано, кто вошел в систему в данный момент. Если пользователь уже вошел в систему в другом сеансе, аннулируйте этот сеанс, установив флаг «вошел в систему» ​​в значение false.

3
ответ дан 5 December 2019 в 07:33
поделиться

Я думаю, что вам нужно сделать что-то вроде этого:

  • добавить колонку "last_session_id" в вашу таблицу пользователей
  • когда пользователь входит в систему, обновить его поле last_session_id текущим id сессии
  • на каждой странице, если пользователь имеет аутентифицированную сессию, проверьте, равен ли id сессии тому, который записан в вашей базе данных. Если нет, уничтожьте эту сессию.
3
ответ дан 5 December 2019 в 07:33
поделиться
Другие вопросы по тегам:

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