Хочу написать свои сессии, которые будут храниться в sql.
Создал таблицу sessions с 4-мя полями: id, key, value, time.
$session->add('ключ сессии', 'значение сессии'); // создаём сессию
$session->get('ключ сессии'); // получаем значение сессии
$session->delete('ключ сессии'); // удаляем сессию
Вроде бы всё хорошо. Но как привязывать сессию к пользователю? По IP глупо, так как могут два компьютера с одинаковыми IP быть одновременно на сайте и тогда неизвестно что получится.
Для пользователя выполнившего вход(авторизацию) у меня сделано вот так : в базу, в таблицу users_sessions пишем :
session - 128-значный ключ сессии(любые 3 позиции из данных пользователя + текущее время в мили.сек. оборачиваем в md5)
users_id - уникальный id пользователя, который пользуется этой сессией
date_updated - время последнего обновления(если хотим чтобы сессия были короткими)
с каждым заходом пользователя на сайт мы делаем проверку на существование сессии в базе(128-значный ключ отдаём пользователю в печеньки(cookies) когда тот выполнил вход)
Выдавать пользователю GUID и хранить его в куках, например...
Может брать существующую сессию и просто хранить ее в бд с привязкой дополнительной инфы. Зачем изобретать велосипед?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей