Идентификаторы сеанса, по сути, являются просто случайными числами. HIGHLY маловероятно, но для двух или более пользователей невозможно получить одинаковый идентификатор сеанса.
PHP (я полагаю) проверяет, существует ли еще один сеанс, использующий только что созданный идентификатор. Если происходит столкновение, оно просто генерирует еще одно и продолжает пытаться, пока не появится что-то «уникальное». Однако это не мешает случаю, когда:
- пользователь A получает идентификатор сеанса 'X'
- пользователь A на некоторое время уходит, а сеанс 'X' истекает
- появляется пользователь B, и сервер снова генерирует идентификатор сеанса 'X' случайным образом
- пользователь A возвращается со своим исходным идентификатором cookie сеанса X и получает сеанс пользователя B.
Опять же, учитывая размер пространства идентификатора сеанса, очень маловероятно, чтобы это произошло. Но опять же, это не невозможно.
Кроме того, существуют случаи, когда сломанные / неправильно настроенные прокси-серверы путают файлы cookie и в основном «пересекаются», так что идентификаторы сеанса смешиваются между разными пользователями. Я помню случай, когда шлюз мобильного оператора делал именно это, и люди на определенной модели смартфона получали сеансы других людей вместо того, на котором они были.