@OneTwoThreeFourFive

Сохранение сессий в базе данных?

Мне нравится способ с сохранением сессий в базе данных. После авторизации сгенерировать строку (ид) и сохранить в базе данных, и установить куки в браузере.

Получается, что в этом случае не нужно создавать сессию в PHP с помощью session_start()?
Получается, что при каждом запросе к серверу будет запрос в базу данных для поиска переданного ид из куки. Нормально так проектировать приложение или нет?

Я использую базу данных вместо сессий PHP, чтобы добавить функцию "запомнить меня" и чтобы сессии были в одном месте, возможность пользователю управлять сессиями (разлогинить на каких-то устройствах).
  • Вопрос задан
  • 540 просмотров
Пригласить эксперта
Ответы на вопрос 3
swaro
@swaro
Nice code - awesome bugs
Получается, что в этом случае не нужно создавать сессию в PHP с помощью session_start()?
Да
Получается, что при каждом запросе к серверу будет запрос в базу данных для поиска переданного ид из куки.
Да
Нормально так проектировать приложение или нет?
Абсолютно нормально.
Ответ написан
Комментировать
Похоже, Вы не совсем понимаете механизм сессий. Да, на стороне клиента хранится только id. Но на стороне сервера могут храниться произвольные данные, ассоциированные с этим id.
Получается, что в этом случае не нужно создавать сессию в PHP с помощью session_start()?

Если Вы собираетесь полностью заменять встроенный механизм сессий на свой, то не нужно. Но этот подход не кажется достаточно обоснованным; посмотрите сначала на https://www.php.net/manual/en/function.session-set...
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Это называется "закат солнца вручную". Если весь сыр-бор вокруг "запомнить меня" и прочими разлогинами, то к самому механизму сессий это никакого отношения не имеет.

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

А если вы все еще пишете свое решение с блэкджеком и сессиями в бд, то лучше используйте пока стандартный функционал.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы