2013-09-05 3 views
1

Я пытаюсь написать обратный отсчет сессии Joomla для пользователей. , но у меня есть проблема для распознавания при расширении сеанса.Joomla 2.5 таймер сеанса - когда сеанс расширяется?

Мой код сейчас

<body data-sesja="<?php echo JFactory::getSession()->getExpire() ; ?>"> 

И JS

//getting session time 
var licznik = $('body').data('sesja'); 

//PROBLEM IS HERE - becouse not all events extenting the session time 
$('body').on('mousedown keyup', function(){ 
    licznik = $('body').data('sesja'); 
}); 

//creating counter object 
var licznikObj = window.setInterval(function() { 
    licznik--; 
    $('.licznik').text(licznik); 
    if (licznik == 0) { 
     window.clearInterval(licznikObj); 
     $('.licznik-info, .licznik').each(function(){ 
      $(this).remove(); 
     }); 
     $(".licznik-msg").text("Twoja sesja wygasła! Zaloguj ponownie."); 
    } 
}, 1000); 

Так что мой вопрос: ведьма события продлить Joomla времени 2,5 сеанса?

+0

Возможно, я ошибаюсь, но почему вы думаете, что события на стороне клиента оказывают какое-либо влияние на истечение сеанса Joomla? Сессия обновляется/расширяется по HTTP-запросу (включая XHR через AJAX). – MasterAM

+0

Да, спасибо, это то, что я хочу знать. Но теперь есть другой вопрос: есть ли какой-либо вариант для проверки на глобальном уровне, когда это происходит? Теперь я знаю, что компонент The MosetsTree имеет два запроса Ajax/JSON в добавлении «нового листинга», а другой - в модуле, который я сделал, но, например, когда я перехожу к «редактированию моего профиля», сеансы никогда не истекают. –

ответ

2

Поскольку я не совсем то, что вы пытаетесь сделать, но я кратко опишу, как работают сессии в Joomla.

Сеанс по умолчанию создается при первой встрече пользователя с веб-сайтом.

Когда пользователь входит в систему, сеанс связан с его пользовательской записью, так что структура автоматически аутентифицируется здесь в следующих запросах. Эти сеансовые куки обычно отправляются клиенту без истечения срока действия и, следовательно, действительны (на стороне клиента) до окончания сеанса браузера.

Если пользователь установил флажок «запомнить меня», явное истечение срока действия устанавливается на основе ваших конфигураций, как правило, несколько дней в будущем.

С другой стороны, на стороне сервера время истечения сохраняется независимо от того, что хранится на стороне клиента. Длительность сеанса по умолчанию составляет 15 минут (900 секунд).

Если пользователь делает другой запрос в течение этого периода, сеанс продлевается на другой период времени (с момента текущего запроса).

Существует декларация поведения (JHtml::_('behavior.keepalive');), которая генерирует скрипт, который запрещает завершение сеанса путем многократной отправки AJAX-запросов на сервер, обычно за 1 минуту до истечения срока его действия.

Это поведение используется довольно часто в интерфейсе.

Я надеюсь, что это поможет вам получить результаты, которые вы после. Я не могу взглянуть на поведение конкретного вида коммерческого расширения, которое у меня нет.