English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
CGI::Session может сохранять постоянное состояние сеанса для пользователей и CGI-среды, после использования сеанса его необходимо закрыть, чтобы обеспечить写入存储中的数据, по завершении сеанса данные необходимо удалить.
#!/usr/bin/ruby require 'cgi' require 'cgi/session' cgi = CGI.new("html4") sess = CGI::Session.new(cgi, "session_key" => "a_test", "префикс" => "rubysess.") lastaccess = sess["lastaccess"].to_s sess["lastaccess"] = Time.now if cgi['bgcolor'][0] =~ /[a-z]/ sess["bgcolor"] = cgi['bgcolor'] end cgi.out{ cgi.html { cgi.body ("bgcolor" => sess["bgcolor"]){ "фondo этой страницы" + "изменения на основе 'bgcolor'" + "каждый пользователь имеет сессию." + "Последнее время доступа: #{lastaccess}" } } }
Адрес доступа "/cgi-bin/test.cgi?bgcolor=red" будет перенаправить на страницу с указанным фоном.
Данные сессии хранятся в временной директории сервера, параметр prefix specifies prefix сессии, который будет использоваться в качестве префикса временных файлов. Таким образом, вы можете легко распознать различные временные файлы сессий на сервере.
CGI::Session поддерживает постоянное состояние пользователя с CGI средой. Сессия может быть в памяти или на жестком диске.
Ruby класс Class CGI::Session предоставляет простые методы для создания сессии:
CGI::Session::new( cgi[, option])
Включает новую CGI сессию и возвращает соответствующий CGI::Session объект. Опции могут быть опциональным хешем, и могут принимать следующие значения:
session_key: Имя ключа для сохранения сессии по умолчанию _session_id.
session_id: Уникальный идентификатор сессии. Автоматически генерируется
new_session: Если значение true, создается новый Session id для текущей сессии. Если значение false, используется существующий session_id через session_id. Если параметр опущен, если доступна, используется существующая сессия, в противном случае создается новая.
database_manager: Класс для сохранения сессий, может быть CGI::Session::FileStore или CGI::Session::MemoryStore. По умолчанию это FileStore.
tmpdir: Для FileStore, каталог для хранения сессий.
prefix: Для FileStore, префикс файла сессии.
Номер | Описание метода |
---|---|
1 | [ ] Вернуть значение для заданного ключа. См. пример. |
2 | [ ]= Установить значение для заданного ключа. См. пример. |
3 | delete Вызов методов удаления на нижнем уровне базы данных. Для FileStore, удалить физический файл, содержащий сессию. Для MemoryStore, удалить данные сессии из памяти. |
4 | update Вызов методов управления базой данных на нижнем уровне. Для FileStore, записать сессию на диск. Для MemoryStore, это не имеет эффекта. |