English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основы Ruby

Давайте разберемся в Ruby

Сессия CGI в Ruby

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::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[ ]=
Установить значение для заданного ключа. См. пример.
3delete
Вызов методов удаления на нижнем уровне базы данных. Для FileStore, удалить физический файл, содержащий сессию. Для MemoryStore, удалить данные сессии из памяти.
4update
Вызов методов управления базой данных на нижнем уровне. Для FileStore, записать сессию на диск. Для MemoryStore, это не имеет эффекта.