В настоящее время я использую PHP-сессии в качестве основы для моей системы входа в систему, с успешным параметром входа $_SESSION ['userid']. Это позволяет пользователю войти в ту же учетную запись с нескольких компьютеров.
Однако я хотел бы реализовать следующие функции:
Оба, скорее всего, потребуют больше, чем просто переменную сеанса, и я готов предоставить больше информации в базу данных для их выполнения. Что такое стандартный способ сделать это?
Создайте новую таблицу базы данных для хранения сеансов, а затем вместо сохранения информации непосредственно в $_SESSION
просто сохраните идентификатор, ссылающийся на строку в новой таблице сеансов. Эта таблица может содержать информацию, такую как IP-адрес, имя пользователя и время последнего действия.
Ваше приложение должно проверить таблицу сеансов на то, что у него есть в $_SESSION
, поэтому, когда вы удаляете все строки в таблице для определенного пользователя, каждый сеанс будет признан недействительным, где бы он ни находился. Вы также можете запросить все строки, принадлежащие определенному пользователю, чтобы вы могли показать, где они имеют активные сеансы.
Вам нужно будет начать думать о том, как пользователь покидает сессию без явного выхода из системы - возможно, запланированное задание, которое выполняется каждый час или день, очистка строк сеанса, которые не имели какой-либо активности за определенный период времени время.
Если вы хотите уничтожить сеанс и выйти из системы, вы можете использовать функцию session_destroy()
. Чтобы удалить определенную переменную сеанса, вы можете сделать это следующим образом:
unset($_SESSION['userid']);
session_destroy();
session_set_save_handler()
и сделать все ваши данные сеанса в базе данных.