Обработка нескольких однопользовательских входов в PHP - PullRequest
2 голосов
/ 10 ноября 2009

Я недавно смоделировал множественный вход в систему PHP , используя 1 учетную запись. Вот что я сделал

  1. открыл 2 экрана входа в систему
  2. вошел в учетную запись 1 с помощью первого экрана входа в систему
  3. вход выполнен успешно
  4. вошел в учетную запись 2, используя второй экран входа в систему

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

Как мне это сделать? Я также сделал это с Gmail , и если электронная почта 1 вошла в систему и электронная почта 2 вошла в систему, Gmail отображает окно с предупреждением о том, что пользователь 1 вышел из системы (при условии, что я вхожу в систему с той же машины и тот же браузер).

Ответы [ 2 ]

1 голос
/ 10 ноября 2009

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

Если вы видите изменение, откройте уведомление и отойдите от страницы.

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

0 голосов
/ 10 ноября 2009

Если вы сохраняете сеансов (что следует делать, если есть какие-либо постоянные данные), просто проверьте, существует ли другой сеанс пользователя, и удалите его.

UPDATE:

Я не думаю, что это подход Gmail, по крайней мере, он не работает для меня так же. Я могу открыть 2 вкладки для входа в Gmail (в том же браузере, в том же сеансе, как указано) и без проблем пройти аутентификацию в обеих. Конечно, оба подключения появляются в активности учетной записи Gmail, но это не рассматривается как вредоносная активность, вы будете исключены, только если вы находитесь на другом компьютере.

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

Вам нужно что-то различать: дата, сессия браузера, ip, что угодно. Кажется, что у вас есть только один выбор - использовать временную метку, когда кто-то из них вошел в систему, но это довольно сложно, и я не рекомендую это.

Я предложу ПОЛЬЗОВАТЕЛЮ 1 шлепнуть ПОЛЬЗОВАТЕЛЯ 2, если он пытается использовать тот же логин в том же браузере (хорошо, плохая шутка).

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