Сессии

Сессии позволяют сохранять пользовательские данные между запросами. Хранение сессий в HostCMS осуществляется в базе данных (по умолчанию) или в Redis (с версии HostCMS 6.8.3, используя php-redis версии 2.6.12+).

Доступ к данным сессии

К данным сессии доступ получается через суперглобальный массив $_SESSION.

$value = $_SESSION['foo'];

Если вы не уверены в наличии требуемого значения в сессии, то используйте Core_Array::getSession(), при отсутствии значения метод вернет NULL

$value = Core_Array::getSession('foo');

То же действие, только с возвратом значения по умолчанию 'default' в случае, если индекса foo в сессии нет

$value = Core_Array::getSession('foo', 'default');

Открытие и закрытие сессии

// Открыть сессию
Core_Session::start();

// Записать в сессию
$_SESSION['foo'] = 'bar';

// Закрыть сессию
Core_Session::close();

Открывать сессию необходимо каждый раз перед там, как записать данные в $_SESSION, дополнительно проверять наличие открытой сессии перед вызовом Core_Session::start() не требуется, проверка содержится внутри метода start().

Проверить, запущена ли сессия:

$bStarted = Core_Session::isStarted();

Проверить, запущена ли сессия и активна:

$bActive = Core_Session::isActive();

Получить имя сессии:

$session_name = Core_Session::getName();

Запустить сессию только в случае, если она была ранее запущена в предыдущих сеансах:

if (Core_Session::hasSessionId())
{
	Core_Session::start();
	
	print_r($_SESSION);
}

Времени жизни сессии

При старте сессии, время жизни устанавливается равным времени, указанном в session.gc_maxlifetime, изменить время жизни сессии можно до или уже после запуска сессии методом Core_Session::setMaxLifeTime($maxlifetime, $overwrite = FALSE)

// Время жизни сессии в секундах (1 сутки с момента последней активности)
Core_Session::setMaxLifeTime(86400);

Время жизни сессии будет установлено в том случае, если оно больше ранее заданного. Чтобы перезаписать время жизни сессии в любом случае, вторым параметром передайте TRUE.

Времени жизни сессии cookies с идентификатором сессии

Время жизни cookie с идентификатором сессии по умолчанию составляет 31536000 секунд, изменить его можно методом Core_Session::cookieLifetime($lifetime), вызванным до старта сессии. * с версии 6.9.7

// Время жизни куки в секундах
Core_Session::cookieLifetime(1440);

Конфигурационный файл

Указание способа хранения сессий и опций осуществляется в основном конфигурационном файле modules/core/config/config.php в опции session.

При хранении сессии в базе данных задаются 2 параметра:

	'session' => array(
		'driver' => 'database',
		'class' => 'Core_Session_Database',
		'subdomain' => FALSE,
	),

Для хранения в Redis требуется больше параметров:

	'session' => array(
		'driver' => 'phpredis',
		'class' => 'Core_Session_Phpredis',
		'server' => '127.0.0.1',
		'port' => 6379,
		'auth' => 'авторизационный пароль'
	),

Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.

Комментарии

  • Опечатка?

    А название метода isAcive() нарочно такое? Или же должно быть isActive() ?

    19.03.2020 13:54:58
    lezhenkin

    Без темы

    Спасибо, опечатка была в коде, добавили в 6.9.2 метод isActive() и оставили обратную совместимость с isAcive(). Если у вас нет метода isActive(), обновленный файл можно взять в поддержке.

    19.03.2020 14:06:03
    hostcms
  • Без темы

    куда смотреть? Настройки сервера или админка?

    17.09.2018 10:24:40
    iNik

    Без темы

    Полагаю нужно разбираться на месте и смотреть везде.

    17.09.2018 12:52:39
    hostcms
  • Подключение REDIS

    Подключил на BEGET услугу REDIS, внес изменения в конфигурационный файл, как у вас написано. После авторизации в админпанели постоянный запрос пароля, без возможности что-либо сделать. В чём может быть причина, не подскажете?

    17.09.2018 09:53:47
    iNik

    Без темы

    Видимо что-то работает неправильно.

    17.09.2018 10:09:32
    hostcms