Как проверить, зарегистрирован ли пользователь на другом компьютере?

У меня есть таблица MYSQL с пользователями. Пользователь может войти в систему, используя php-код. Его имя хранится в переменной SESSION. Как я могу проверить, зарегистрирован ли пользователь уже на другом компьютере, чтобы запретить ему вход в систему снова?

Сценарий:

Компьютер 1:
USER1 зарегистрирован в
Компьютер 2:
USER1 пытается снова войти в ногу, но он не может, потому что он уже вошел в систему на другом компьютере.

Related of "Как проверить, зарегистрирован ли пользователь на другом компьютере?"

Попытайтесь создать столбец «isLogged» в банке данных и установите для него значение true o false, когда пользователь запускает или завершает сеанс. Я делал это и прекрасно работал.

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

<?php if ($_SESSION["MySession"] != "") { //Update database field to set this user as actively browsing. //Also set a timestamp so you know when he last visited a page. } ?> 

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

Вы можете создать cron и запустить его каждые 5 минут. Или вы могли бы снова запустить код вверху страницы, который устанавливает все поля user_logged_in в false, если они не были активны в течение прошлых x минут.

Поэтому, чтобы:

  1. Пользователь регистрируется на веб-сайте, $_SESSION["UserName"] имеет имя пользователя.
  2. В верхней части каждой страницы вы проверяете сеанс, чтобы проверить, является ли сеанс имени пользователя действительным, и обновить таблицу пользователя в базе данных, чтобы сказать, что он активно просматривает (используя поле метки времени).
  3. Проверьте таблицу пользователя и очистите все зарегистрированные флаги, где пользователь неактивен в течение X минут.