Ограничение сеансов только 1 экземпляром входа пользователя

#php #javascript #html #ajax

#php #javascript #HTML #ajax

Вопрос:

у меня есть система входа пользователя, которая работает вне сеансов, так что, когда пользователь входит в систему, переменная сеанса user заполняется его именем пользователя, затем каждая загружаемая страница проверяет этот сеанс, если он не заполнен, страница перенаправляется на страницу входа. при выходе из системы сеанс уничтожается.

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

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

все мои страницы — php, и я использую ajax и php-скрипты для обновления динамического содержимого.

Итак, каков наилучший способ сделать это?

Ответ №1:

они получают сообщение об ошибке, в котором говорится, что пользователь уже вошел в систему.

Это неправильный подход, вызывающий ужасный пользовательский опыт.

Сделайте это наоборот: позвольте этому последнему войти, но сделайте так, чтобы предыдущий вышел из системы. Вам нужно только сохранить текущий идентификатор сеанса в таблице пользователя. Если он не соответствует — попросите войти.

Ответ №2:

Если вы обнаружите в БД, что пользователь уже вошел в систему, просто спросите, хочет ли он / она продолжить и перезаписать старую информацию о сеансе. Другим способом может быть добавление временного билета к информации вашей базы данных (например, время вставки) и проверка, сколько времени прошло с момента вставки.

С уважением

Ответ №3:

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

Ответ №4:

Я бы создал другую переменную сеанса, которая проверяет тип браузера, если он отличается, вызовите метод просмотра, чтобы вывести то, что вы сказали