один и тот же вошедший в систему пользователь назначил разные идентификаторы сессии (в разных браузерах) - PullRequest
1 голос
/ 29 апреля 2010

Я реализовал основанный на MySQL интерфейс сеанса в php. Я только что узнал, что если я войду в свою учетную запись, используя браузер A (например, Chrome), а затем войду в ту же учетную запись в другом браузере B (например, IE), каждому браузеру будут назначены 2 отдельных идентификатора сеанса. Как сделать так, чтобы при повторном входе в систему через браузер B я сохранял активный сеанс предыдущего браузера A?

Проблема в том, что я храню определенную информацию в сеансе, а данные не синхронизируются между одними и теми же пользователями в разных браузерах и разрушают хаос. : S

Есть ли способ достичь этого?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 29 апреля 2010

Если вы сохраняете сеанс в базе данных, добавьте механизм, посредством которого userId сохраняется как часть записи сеанса вашей базы данных, создавая то, что я люблю называть «семантическим сеансом». Когда пользователь входит в систему, проверьте, существует ли другой сеанс; если это так, используйте session_id(), чтобы зафиксировать новый сеанс с идентификатором старого сеанса, который присоединится к ним (и должен изменить идентификатор нового сеанса для всех последующих запросов). Обязательно выполняйте это действие только на этапе входа в систему, иначе вы можете столкнуться с причудливыми условиями гонки двух сессий, пытаясь быть друг с другом и «обмениваться».

1 голос
/ 29 апреля 2010

Не сохранять данные в сеансе, хранить их в базе данных.

0 голосов
/ 29 апреля 2010

Сессии обычно идентифицируются с помощью файлов cookie, которые видны только в одном браузере. Возможно, вы могли бы использовать Flash для обмена идентификатором сеанса между браузерами, но я не могу придумать случай использования. Смысл сеанса заключается в хранении данных, которые связаны с одним сеансом просмотра, а не с пользователем в целом. Вы должны использовать базу данных или какую-либо другую форму серверного хранилища для общих пользовательских данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...