2013-07-06 5 views
3

У меня есть $config['sess_expiration'] = 7200; на моем файле config.php, что означает, что сеанс последний раз в 2 часа.экстент codeigniter Завершение сеанса

По умолчанию сеанс создается при входе пользователя. Теперь я хочу продолжить сеанс на основе состояния User IDLE.

Поэтому, когда пользователь активен на странице, мне нужно возобновить сеанс.

Ex.

опрос к серверу каждые 2 минуты через AJAX со статусом текущего пользователя, IDLE или ACTIVE

если состояние ACTIVE тогда я хочу, чтобы степень/обновить/обновить тайм-аут сеанса в течение еще 2-х часов с AJAX вызов.

Infact Если статус IDLE я будет работать таймер на веб-странице, и, прежде чем он достигнет своего таймаут (2 часа), мне нужно, чтобы отобразить предупреждение пользователю ==>

«Ваша текущая сессия собирается expire. Вы хотите возобновить сеанс? "

Если пользователь нажимает YES, тогда я хочу продлить сеанс еще на 2 часа, иначе я отправлю команду LOG OUT.

Вопрос: Как я обновляю/обновляю/продлеваю время ожидания сеанса?

Также есть ли другие доступные решения.

Я использую PHP 5, Codeigniter 2.x, Bitauth (User Authentication).

Благодаря

ответ

5

Просто вы можете использовать $config['sess_time_to_update'] = 30; //seconds, который будет обновлять время ожидания сеанса, если пользователь находится в режиме ожидания и session expiration время истекло, т.е. $config['sess_expiration'] = 7200;, а затем пользователь нажимает любую ссылку, он автоматически регистрируется из-за CI проверить сессию на каждом запросите, превышает ли время session expiration время или не превышает срок годности, тогда ваш сеанс будет уничтожен. Если пользователь обращается к любому запросу через час, то ваши sess_time_to_update обновления sess_expiration позволяют говорить отныне до двух часов. По умолчанию CI создает новый идентификатор сессии в определенный интервал $config['sess_time_to_update'] = 30; т.е. через каждые 30 секунд новый идентификатор сессии будет создан

Для глубокого присматриваться вы можете увидеть Session.php в библиотеках sess_update() это функция, которая обновляет сеанс поэтому у вас есть хорошая идея, что делает CI, если вы не используете сеанс database, тогда CI хранит информацию в cookie, иначе он хранит данные в таблице ci_sessions