Сегодня мы рассмотрим основные моменты работы с сессиями в kohana 3.3.x.
Сессии как в php так и в Kohana используются для хранения данных веб-приложения или проще говоря скрипта. Под хранения данных я подразумеваю хранения промежуточных данных, таких как например id пользователя, данных счетчиков и прочее.
Сам класс с функциями для работы с сессиями находится в папке /system/classes/kohana/session.php. Класс для наследования выше уровнем /system/classes/session.php.
Если вам нужна более тщательная настройка для сессий то необходимо создать файл в папке application/config/ с именем session.php.
return array(
'native' => array(
'name' => 'session_name',
'lifetime' => 43200,
),
'cookie' => array(
'name' => 'cookie_name',
'encrypted' => TRUE,
'lifetime' => 43200,
),
'database' => array(
'name' => 'cookie_name',
'encrypted' => TRUE,
'lifetime' => 43200,
'group' => 'default',
'table' => 'table_name',
'columns' => array(
'session_id' => 'session_id',
'last_active' => 'last_active',
'contents' => 'contents'
),
'gc' => 500,
),
);
Существуют несколько вариантов хранения сессий, стандартная конфигурация хранит сессию в cookie, а можно хранить в базе для этого нужно создать таблицу:
CREATE TABLE `sessions` (
`session_id` VARCHAR(24) NOT NULL,
`last_active` INT UNSIGNED NOT NULL,
`contents` TEXT NOT NULL,
PRIMARY KEY (`session_id`),
INDEX (`last_active`)
) ENGINE = MYISAM;
При хранении сессий в базе, можно хранить до 64 кб заместо 4 кб при стандартной конфигурации.
Также необходимо чтобы был подключен модуль database.
Доступные драйвера и их контейнеры для хранения :
cookie – использует кукисы (по умолчанию)
native – использует файлы
database – использует базу данных
cache – использует различные контейнеры (файл, память, база данных) зависит от конфигурации.
Для старта сессий в контроллере пропишите:
$session = Session::instance();
Если вы используете базу для хранения сессий, или другие варианты отличные от стандартной конфигурации, необходимо передать дополнительный параметр в Session::instance(), кроме этого прописать настройки в файле application/config/session.php
// Старт сессий с хранением в базе
$session = Session::instance('database');
Для записи значений в сессию используется метод — set:
// user - имя переменной в сессии ,1 - значение
$session->set('user', 1);
Для удаления значений в сессии используется метод — delete:
// user - имя переменной в сессии
$session->delete('user');
Для получения значения переменной в сессии используется метод — get:
// user - имя переменной в сессии
$session->get('user');
На этом все.
Frameworks.su Шпаргалка вебмастера