Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 9 Ответов
  • 1363 Просмотров
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Чудеса с сессией
« : 16.11.2014, 23:04:09 »
Проблема тут: http://04744.biz/ru/?tmpl=testsession.

Внизу я распечатал массив с куками. Там вобщем то только две куки одна с языком, вторая с идентификатором сессии. Проблема в том что при закрытии браузера каким то волшебным образом пропадает кука с идентификатором сессии. Если обновлять страничку то все нормально, но если закрыть браузер и открыть снова эту страничку то начинается новая сессия что вобщем то ненормально.

Причем подобное наблюдается только в ie и Firefox, и только на этом сайте. На локалке все норм. И в Chrome и в opere тоже норм. У заказчика подобное наблюдается на всех устройствах и браузерах, по его словам, а у вас как? Кто нибудь может быть сталкивался с подобным?
интернет-блог: http://websiteprog.ru
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Чудеса с сессией
« Ответ #1 : 16.11.2014, 23:39:06 »
а как ты их получаешь
Код: php-brief
$session = JFactory::getSession();
или из $_SESSION
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Чудеса с сессией
« Ответ #2 : 17.11.2014, 00:21:08 »
Цитировать
$session = JFactory::getSession();

Первый вариант. Проблема я так думаю с этой кукой которая идешник сессии хранит..куда она пропадает? Может какой нибудь плагин удаляает таким образом сессию? Тогда почему не во всех браузерах?
« Последнее редактирование: 17.11.2014, 00:28:41 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Чудеса с сессией
« Ответ #3 : 17.11.2014, 13:25:45 »
А куку как устанавливаете?
надеюсь так:
Код: php
$config = JFactory::getConfig();
setcookie('name', 'value', time() + 365 * 86400, $config->get('cookie_path', '/'), $config->get('cookie_domain', ''));
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Чудеса с сессией
« Ответ #4 : 17.11.2014, 18:31:59 »
А куку как устанавливаете?

Никак вобще-то. Его же вроде фреймворк устанавливает когда сессию стартует?

Я пробавал  устанавливать время жизни сессионной куки (она почему то равна 0 несмотря на настройку в админке на 90 минут, видимо этот параметр только к хранилищу относится сессии) таким образом:

Код: php
session_set_cookie_params(90000);

Однако эффекта 0.
« Последнее редактирование: 17.11.2014, 18:40:25 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Re: Чудеса с сессией
« Ответ #5 : 17.11.2014, 18:42:41 »
Если обновлять страничку то все нормально, но если закрыть браузер и открыть снова эту страничку то начинается новая сессия что вобщем то ненормально.
что тут ненормального?
у куки вообще-то есть время жизни и по умолчанию как-раз это время жизни сессия браузера
т.е. браузер закрывается куки стираются
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Чудеса с сессией
« Ответ #6 : 17.11.2014, 18:55:40 »
т.е. браузер закрывается куки стираются

Ну вобще-то они не все стираются. Если вы обратите внимание там есть вторая кука которая содержит язык и она не стирается при закрытии браузера. Также кукисы не стираются на том же сайте на локалке и в webkit браузерах. Да и к тому же я время жизни указываю для куки в секундах..

Да и вобще если бы они затирались вам бы пришлось логинится каждый раз после закрытия браузера, как вобще-то сейчас и происходит на этом сайте..
« Последнее редактирование: 17.11.2014, 19:17:25 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Re: Чудеса с сессией
« Ответ #7 : 17.11.2014, 19:18:03 »
Да и к тому же я время жизни указываю для куки в секундах..
где?
Никак вобще-то. Его же вроде фреймворк устанавливает когда сессию стартует?
тут?)
Так может он ткак раз там и не задает время жизни

Да и вобще если бы они затирались вам бы пришлось логинится каждый раз после закрытия браузера.
Это из другой Opera
Есть такая галочка как "запомнить меня" или что-то в этом духе, тогда да будет устанавливаться отдельная кука
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Чудеса с сессией
« Ответ #8 : 17.11.2014, 19:23:26 »
Возможно вы и правы сейчас попробую задать для этой куки отдельно время жизни. Но почему тогда пользователь в админке остается залогиненым после закрытия/открытия браузера. Там же нету никакой галки?

UPD: Да вы оказались правы. Фреймворк действительно ограничивает время жизни сессии до первого закрытия браузера. Сделал таким образом:

Код: php
$session = JFactory::getSession();
setcookie(session_name(), $session->getId(), time() + 90000);


Все дальше можно работать с сессией не беспокоясь о том что она затрется после закрытия браузера. Кстатии в исходниках подсмотерел (класс jsession, метод _start()):
Код: php
...
setcookie($session_name, '', time() - 3600);
...

Вот таким образом видимо зачищается эта кука..Но пару вопросов остается открытыми почему это не происходит в webkit браузерах(opera, chrom), и на локальном сервере. Да и в админке помоему тоже..
...
 
« Последнее редактирование: 17.11.2014, 19:43:03 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Чудеса с сессией
« Ответ #9 : 17.11.2014, 19:35:36 »
Потому, что время сессии панели управления как раз и задаётся в глобальных настройках. А вот на фронт она может и не влиять.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться