Выйти везде, где еще я захожу - PullRequest
0 голосов
/ 22 сентября 2010

В настоящее время я использую сеансы PHP в качестве основы для моей системы входа в систему пользователя, с параметром успешного входа в систему $ _SESSION ['userid'].Это позволяет пользователю входить в одну и ту же учетную запись с нескольких компьютеров.

Однако я хотел бы реализовать следующие функции:

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

Обе, вероятно, потребуют больше, чем просто переменная сеанса, и я готов поместить больше информации в базу данныхвыполнить это.Что является стандартным способом сделать выше?

Ответы [ 2 ]

2 голосов
/ 22 сентября 2010

Создайте новую таблицу базы данных для хранения сеансов, а затем вместо сохранения информации непосредственно в $_SESSION, просто сохраните идентификатор, ссылающийся на строку в вашей новой таблице сеансов. Эта таблица может содержать такую ​​информацию, как IP-адрес, имя пользователя и время последней активности.

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

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

0 голосов
/ 22 сентября 2010

Если вы хотите уничтожить сессию и выйти из системы, вы можете использовать функцию session_destroy().Чтобы удалить определенную переменную сеанса, вы можете сделать это следующим образом:

unset($_SESSION['userid']);
session_destroy();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...