CodeIgniter генерирует несколько сеансов в базе данных. Зачем? - PullRequest
2 голосов
/ 13 марта 2010

У меня есть сайт, который выполняет несколько вызовов ajax при загрузке страницы. По какой-то причине CodeIgnitor вставляет 4 сеанса (я предполагаю один для каждого вызова ajax) при загрузке страницы. Я храню сессии в базе данных.

Я почти уверен, что в браузере должен быть только один сеанс. Firefox, кажется, генерирует только один; другие браузеры, кажется, создают целую кучу сессий. Несколько сеансов для одного и того же пользователя вызывают у меня серьезные проблемы с аутентификацией.

Почему это происходит? Как я могу это остановить?

Ответы [ 6 ]

7 голосов
/ 03 августа 2012

Привет, ребята,

Я знаю, что обсуждение проходило некоторое время назад, но кто-то может найти это полезным. К настоящему времени я использовал сеанс CI, не сохраняя его данные в базе данных. Сегодня я решил попробовать и сразу столкнулся с той же проблемой: CI генерировал новый сеанс при каждой загрузке страницы.

Я проверил время своего сервера, часовой пояс, файлы cookie и т. Д. - все, что я мог найти в качестве подсказки на форумах, - безрезультатно. Затем решил отладить класс CI Session самостоятельно. Короче говоря, оказалось, что мое поле user_agent в моей таблице сеансов было слишком маленьким - VARCHAR 50 - которое обрезает исходную строку user_agent - следовательно, CI не находит мой сеанс и генерирует другой. Я просто увеличил размер поля user_agent до 200, и все работает как шарм.

Я забыл упомянуть, что использую Mac OS X Lion.

Опять же, надеюсь, это кому-нибудь поможет.

1 голос
/ 16 декабря 2011

Я нашел эту тему с той же проблемой: на каждой странице CI генерирует новый сеанс. Возможное решение: удалить подчеркнутое из имени сайта (НЕ "my_test_site.com", а "my-test-site.com"). По крайней мере, это помогло в моей ситуации.

1 голос
/ 01 июля 2011

Проверьте дату / время на вашей клиентской ОС и на вашем сервере.

Я знаю, что уже слишком поздно, но, возможно, кто-то найдет эту страницу, ища ответ ...

Я думаю, это происходит потому, что CI устанавливает время истечения для куки, содержащего идентификатор сеанса, и если разница во времени между сервером и клиентом превышает время истечения срока действия куки, и сервер генерирует новый сеанс клиент по каждому запросу. Никогда не удосужился выяснить точный механизм, но случалось со мной несколько раз, и это исправление всегда работало.

0 голосов
/ 11 августа 2014
$config['cookie_domain'] = "example.com";

Используйте ваше доменное имя в этом фрагменте.

0 голосов
/ 17 ноября 2011

Проверьте дату / время на вашей клиентской ОС и на вашем сервере.

У меня была такая же ситуация, и подтвердите решение как исправление

0 голосов
/ 13 марта 2010

Проверьте файл config.php и убедитесь, что параметры cookie правильно заполнены. Если это не так, он не может отследить пользователя и генерирует новый сеанс при каждой загрузке страницы.

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