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

Sessão CGI Ruby

CGI::Session pode salvar o estado de sessão persistente do usuário e do ambiente CGI, após o uso da sessão, deve ser fechada para garantir que os dados sejam escritos no armazenamento. Quando a sessão for concluída, você precisa deletar esses dados.

Exemplo Online

#!/usr/bin/ruby
 
require 'cgi'
require 'cgi/session'
cgi = CGI.new("html4")
 
sess = CGI::Session.new(cgi, "session_key" => "a_test",
                              "prefix" => "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"]){
      "O fundo desta página"    +
      "mudanças baseadas no 'bgcolor'" +
      "cada usuário tem na sessão."      +
      "Último tempo de acesso: #{lastaccess}"
    }
  }
}

Acessar "/cgi-bin/test.cgi?bgcolor=red" redirecionará para a página com a cor de fundo especificada.

Os dados da sessão existem no diretório temporário do servidor, o parâmetro prefix especifica o prefixo da sessão, que será o prefixo dos arquivos temporários. Dessa forma, você pode identificar facilmente diferentes arquivos temporários de sessão no servidor.

Classe CGI::Session

CGI::Session mantém o estado persistente do usuário com o ambiente CGI. A sessão pode estar na memória ou no disco rígido.

Métodos de classe

A classe Ruby Class CGI::Session fornece métodos simples para criar sessão:

CGI::Session::new( cgi[, option])

Ativa uma nova sessão CGI e retorna o objeto CGI::Session correspondente. As opções podem ser um hash opcional, podendo ser os seguintes valores:

  • session_key: Nome da chave para salvar a sessão. O padrão é _session_id.

  • session_id:  ID de sessão único. Gerado automaticamente

  • new_session: Se for true, criará um novo Session id para a sessão atual. Se for false, usará o session_id para identificar a sessão existente. Se o parâmetro for omitido, se disponível, usará a sessão existente; caso contrário, criará uma nova.

  • database_manager: Classe usada para armazenar sessões, pode ser CGI::Session::FileStore ou CGI::Session::MemoryStore. O padrão é FileStore.

  • tmpdir:  Para FileStore, o diretório de armazenamento de erro da sessão.

  • prefix: Para FileStore, o prefixo do arquivo de sessão.

Método de Exemplo

Número de OrdemDescrição do Método
1[ ]
Retorna o valor da chave fornecida. Veja os exemplos.
2[ ]=
Define o valor da chave fornecida. Veja os exemplos.
3delete
Chama o método de exclusão de gerenciamento de banco de dados subjacente. Para FileStore, exclui o arquivo físico que contém a sessão. Para MemoryStore, remove os dados da sessão da memória.
4update
Chama o método de gerenciamento de banco de dados subjacente. Para FileStore, escreve a sessão no disco. Para MemoryStore, não tem efeito.