Свои сессии на MySQL

144
15 декабря 2016, 15:54

Хочу написать свои сессии, которые будут храниться в sql.

Создал таблицу sessions с 4-мя полями: id, key, value, time.

$session->add('ключ сессии', 'значение сессии'); // создаём сессию
$session->get('ключ сессии'); // получаем значение сессии
$session->delete('ключ сессии'); // удаляем сессию

Вроде бы всё хорошо. Но как привязывать сессию к пользователю? По IP глупо, так как могут два компьютера с одинаковыми IP быть одновременно на сайте и тогда неизвестно что получится.

Answer 1

Для пользователя выполнившего вход(авторизацию) у меня сделано вот так : в базу, в таблицу users_sessions пишем :

session - 128-значный ключ сессии(любые 3 позиции из данных пользователя + текущее время в мили.сек. оборачиваем в md5)

users_id - уникальный id пользователя, который пользуется этой сессией

date_updated - время последнего обновления(если хотим чтобы сессия были короткими)

с каждым заходом пользователя на сайт мы делаем проверку на существование сессии в базе(128-значный ключ отдаём пользователю в печеньки(cookies) когда тот выполнил вход)

Answer 2

Выдавать пользователю GUID и хранить его в куках, например...

Answer 3

Может брать существующую сессию и просто хранить ее в бд с привязкой дополнительной инфы. Зачем изобретать велосипед?

READ ALSO
Подбор заявок подходящих под условие

Подбор заявок подходящих под условие

Есть заявки, у заявки есть параметры, каждый параметр в своей таблицеНадо выбрать заявки которые подходят под условия

176
Как реализовать фильтр слов?

Как реализовать фильтр слов?

Есть таблица "фразы" с полем "фраза"Есть таблица "фильтр" с полем "слово"

182