Сегодня мы рассмотрим основные моменты работы с сессиями в 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');
На этом все.