Как правило, файл cookie, хранящийся в клиенте, представляет собой длинную, трудно угадываемую строку хеш-кода, которую можно использовать в качестве ключа в базе данных. На стороне сервера у вас есть таблица, отображающая эти хеши сеансов на первичные ключи (хеш сессий должен никогда не быть первичным ключом) и метки времени истечения.
Поэтому, когда вы получаете запрос, первое, что вы делаете, это ищите cookie. Если его нет, создайте запись сеанса (cookie + метка времени истечения) в таблице базы данных. Если он есть, посмотрите его и убедитесь, что он не истек; если есть, создайте новый. В любом случае, если вы создали новый файл cookie, вы можете передать этот факт в более поздний код, чтобы он знал, нужно ли ему запрашивать логин или что-то в этом роде. Если вам не нужно было создавать новый файл cookie, сбросьте метку времени истечения, чтобы не завершать сеанс слишком рано.
При обработке кода представления и генерации ответа вы можете использовать этот первичный ключ сеанса для индексации в других таблицах, с которыми связаны данные. Наконец, в ответе, отправленном обратно клиенту, установите для cookie хэш ключа сеанса.
Если у кого-то cookie-файлы отключены, то их сеансовый cookie-файл всегда будет новым, и любые функции на основе сеанса не будут работать.