Форум русской поддержки Joomla!® CMS
05.12.2016, 20:34:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Время жизни сессии для различных групп пользователей

 (Прочитано 367 раз)
0 Пользователей и 1 Гость смотрят эту тему.
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6454



« : 06.04.2015, 14:33:40 »

Собственно, сабж.
Надо для одних стандартные 15 мин, для других пару часов (авторы и корректоры материалов), третьим - безлимит (царю и богу =) )
Возможно ли такое?
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #1 : 06.04.2015, 15:19:56 »

Думаю что возможно. Написать плагин на какое нибудь событие авторизации, который будет коректировать время жизни сессионной куки
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6454



« Ответ #2 : 06.04.2015, 15:30:05 »

Или js, который будет отправлять холостой post...
Вообще думал как либо модернизировать в корне, с целью дальнейшего внесения палл-реквеста на внесение изменений в дистрибутив. Может, уже делал кто-либо что-то похожее?
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #3 : 06.04.2015, 15:48:46 »

Насчет js не понял
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6454



« Ответ #4 : 06.04.2015, 16:52:36 »

AJAX, таймер
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #5 : 06.04.2015, 17:14:57 »

Каждую секунду аяксы пулять?
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6454



« Ответ #6 : 06.04.2015, 17:36:35 »

Ну зачем каждую секунду? Берем время жизни сессии и вычитаем из него секунд десять, результат и будет значением интервала таймера.
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #7 : 06.04.2015, 17:41:03 »

Не понимаю как таким образом можно установить время жизни сессии. В любом случае изврат какойто. Да и что будет отсылать эти аяксы? Опять же какой то модуль, плагин или скрипт я так понимаю.
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6454



« Ответ #8 : 06.04.2015, 17:43:00 »

Не установить, а продлить, чтобы вылета по тайм-ауту не было. Жесткий костыль, не являющийся нормальным решением.
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #9 : 06.04.2015, 17:48:49 »

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

вот, может пригодится:
Код
$session = JFactory::getSession();
setcookie(session_name(), $session->getId(), time() + 90000);
 

90000 это секунды или милисекунды не помню уже
UPD: это секунды.
« Последнее редактирование: 06.04.2015, 17:56:29 от zomby6888 » Записан
fsv
Практически профи
*******

Репутация: +330/-2
Offline Offline

Пол: Мужской
Сообщений: 2238


« Ответ #10 : 17.04.2015, 22:01:14 »

Не установить, а продлить, чтобы вылета по тайм-ауту не было. Жесткий костыль, не являющийся нормальным решением.
Ну, сейчас именно так и есть, и не костыль.
Код
JHtml::_('behavior.keepalive');
\libraries\cms\html\behavior.php , public static function keepalive()
туда бы добавить определение группы, а в конфиг пару полей с $lifetime для них, и получится у вас
Цитата: AlekVolsk
Вообще думал как либо модернизировать в корне, с целью дальнейшего внесения палл-реквеста на внесение изменений в дистрибутив.
А пока плагином на основе этого кода, в настройках плагина - $lifetime для групп. Только изучить, где и зачем на FE оригинал подключается, чтобы не пересекаться.
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6454



« Ответ #11 : 17.04.2015, 22:03:54 »

Маленький ньюанс: JHtml::_('behavior.keepalive'); - это мутулс, который я плагином Федора отключаю напрочь на всех своих сайтах.
Записан
fsv
Практически профи
*******

Репутация: +330/-2
Offline Offline

Пол: Мужской
Сообщений: 2238


« Ответ #12 : 17.04.2015, 23:27:06 »

это мутулс
Цитировать
на основе этого кода
я имел ввиду, на чистом javascript, чтобы не зависеть ни от одной библиотеки
Записан
Fedor Vlasenko
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #13 : 17.04.2015, 23:57:30 »

Первый раз вижу такое, не думаю что это хорошая идея какая разница будет если время сессии будет одинаково
А вот продлевать время сессии с помощью js приходилось вот так, не знаю сработает или нет так как там где это использовалось был чистый php
Код
var req = false;
setInterval(function () {
   req = false;
   function request(a) {
       for (a = 0; a < 4; a++) try {
           return a
               ? new ActiveXObject(['', 'Msxml2', 'Msxml3', 'Microsoft'][a] + '.XMLHTTP')
               : new XMLHttpRequest;
       } catch (e) {};
   };
   req = request();
   if (req) {
       req.open('HEAD', document.location.href, true);
       req.send();
   }
}, 180000); // раз в 3 мин
 
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6454



« Ответ #14 : 18.04.2015, 00:26:49 »

Цитировать
Код
            return a
               ? new ActiveXObject(['', 'Msxml2', 'Msxml3', 'Microsoft'][a] + '.XMLHTTP')
               : new XMLHttpRequest;
Непонятно, что этот код делает
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #15 : 18.04.2015, 01:57:13 »

Это для очень древних браузеров которые не поддерживают XMLHttpRequest (почивший ie6). Я если честно не понимаю зачем пулять аяксы js-ом для продления сессии если можно сразу задать нужное время жизни. Тем более я сейчас посмотрел генерируется системное событие 'onAfterSessionStart' после старта сесии . Идеальный расклад для плагина.
« Последнее редактирование: 18.04.2015, 03:52:28 от zomby6888 » Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6454



« Ответ #16 : 18.04.2015, 12:05:40 »

ок, покопаюсь над плагином
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet