Intereting Posts
Laravel 5.4, переименование столбца таблицы пользователей Поле проверки для идентичного номера BigQuery PHP Вызов неопределенного метода Google_Client :: setAssertionCredentials () Как показать данные с помощью флажков в zend Framework Как добавить методы динамически array_key_exists ($ key, $ array) vs! empty ($ array ) Как добавить пользовательские поля в регистрационную форму WooCommerce Symfony 2 – Тип формы формы: как отформатировать сгенерированный раскрывающийся список? Что такое хороший способ проверить, является ли изображение уникальным с помощью PHP? Переместить значение атрибута title в значение атрибута класса в HTML-коде Почему мои php-теги преобразуются в html-комментарии? Электронная почта в отдельной теме в php Как я могу установить CURLOPT_CAINFO глобально для PHP в Windows? MySQL Найдите различия в уровнях запасов между двумя таблицами и верните результат Joomla 3.X – Удалить скрипт всплывающей подсказки из заголовка?

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

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

спасибо

Проблема со всеми этими решениями на основе IP-адреса заключается в том, что если пользователь находится за прокси-сервером, который направляет свой запрос через несколько IP-адресов, это может привести к сбою, что означает, что пользователь не может оставаться в системе.

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

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

Когда пользователь входит в систему, поместите свой IP-адрес в базу данных. Если их IP-адрес изменится, попросите их снова войти в систему.

Еще проще было бы сохранить их SessionID. Если это изменится, аннулируйте старый сеанс.

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

Вы можете попробовать сохранить IP-адрес пользователя в базе данных при входе в систему и очистить этот IP-адрес при выходе из системы (или вы выходите из системы). Если пользователь пытается войти в систему, но у них уже есть другой IP-адрес, хранящийся в базе данных, который может быть признаком того, что они входят в систему с двух разных машин …. не на 100% точнее, но могут сортировать работу

Я бы посоветовал отслеживать текущий (последний) IP-адрес, с которого вошел пользователь. Когда пользователь входит в систему, измените этот IP-адрес. Проверить текущий IP-адрес на последнюю IP-часть процедуры проверки подлинности; если все по-другому, выйдите из системы. Затем он может снова войти в систему, но это приведет к отключению входа в систему другого компьютера.