PHP, время входа и выхода из системы во временной таблице?
Вопрос
Я только что где-то прочитал статью.Они используют session_id для хранения времени входа и выхода из системы для каждого успешно вошедшего пользователя во временной таблице.Это означает, что таблица будет удалена после завершения сеанса.Так зачем же они создают таблицы??
Есть ли какое-либо использование временных таблиц?И почему необходимо использовать session_id??
Каковы другие варианты использования session_id во временной таблице входа и выхода из системы??(Я просто не могу определить подключение и использование идентификатора сеанса, времени входа и выхода из системы во временных таблицах.)
Решение
Вместо использования второй таблицы почему бы не использовать таблицу users для хранения этой информации?
Таблица пользователей:
CREATE TABLE `Users` (
`Id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`Username` VARCHAR(32) NOT NULL,
`Password` CHAR(32) NOT NULL,
`Login` TIMESTAMP DEFAULT 0,
`Logout` TIMESTAMP DEFAULT 0,
PRIMARY KEY (`Id`),
UNIQUE KEY (`Username`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1
Теперь, когда пользователь входит в систему, сохраните его идентификатор в переменной $_SESSION и обновите метку времени входа в систему:
UPDATE `Users` SET `Login` = NOW() WHERE `Id` = id_stored_in_session;
а затем, когда он выйдет из системы, используйте ту же команду сверху, но на Logout
Другие советы
"ВРЕМЕННАЯ таблица видна только текущему соединению и автоматически удаляется при закрытии соединения". (оригинал)
Так что временные таблицы определенно не годятся.Я буду голосовать за решение Криса.
бьюсь об заклад, они используют временную таблицу для хранения информации о сеансе (используя session_set_save_handler
) и это хорошо:информация о сеансе меняется очень быстро и часто, временные таблицы идеально подходят для таких решений
а может быть, вы перепутали временное с памятью?таблицы памяти не хранятся на вашем жестком диске, и данные теряются при перезагрузке, что вполне возможно для информации о сеансе
Идентификаторы сеанса очень удобны для распознавания того, вошли пользователи в систему или нет.
Просто создайте таблицу входа с именем пользователя, идентификатором сеанса, временем недавнего доступа.
Когда пользователь запрашивает новую страницу, проверьте, совпадают ли идентификатор сеанса и имя пользователя или нет.
Если они совпадали, просто обновите recentaccesstime .
Если время последнего доступа составляет > 60 минут, вы можете установить, что пользователь вышел из системы с нашего сайта, и удалить его объект из таблицы входа.