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

SessionCGIRuby

CGI::Session puede guardar el estado de sesión persistente para el usuario y el entorno CGI. Después de usar la sesión, debe cerrarla para garantizar que los datos se escriban en el almacenamiento. Cuando finalice la sesión, debe eliminar los datos.

Ejemplo en línea

#!/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"]){
      "El fondo de esta página"    +
      "cambios basados en el 'bgcolor'" +
      "cada usuario tiene en sesión."      +
      "Último tiempo de acceso: #{lastaccess}"
    }
  }
}

Acceder a "/cgi-bin/test.cgi?bgcolor=red" se saltará a la página con el color de fondo especificado.

Los datos de sesión existen en el directorio temporal del servidor, el parámetro prefix especifica el prefijo de la sesión, que se utiliza como prefijo de los archivos temporales. De esta manera, en el servidor puede identificar fácilmente los archivos temporales de diferentes sesiones.

Clase CGI::Session

CGI::Session mantiene el estado persistente del usuario con el entorno CGI. Las sesiones pueden estar en la memoria o en el disco duro.

Métodos de clase

La clase Ruby Class CGI::Session proporciona métodos sencillos para crear sesiones:

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

Activa una nueva sesión CGI y devuelve el objeto CGI::Session correspondiente. Las opciones pueden ser un hash opcional, y pueden ser los siguientes valores:

  • session_key: Nombre de clave para guardar la sesión. Por defecto es _session_id.

  • session_id:  ID de sesión único. Generado automáticamente

  • new_session: Si es verdadero, crea un nuevo id de sesión para la sesión actual. Si es falso, utiliza la identificación de sesión existente a través de session_id. Si se omite este parámetro, si está disponible se utiliza la sesión existente, de lo contrario se crea una nueva.

  • database_manager: Clase utilizada para almacenar sesiones, puede ser CGI::Session::FileStore o CGI::Session::MemoryStore. Por defecto es FileStore.

  • tmpdir:  Para FileStore, directorio de almacenamiento de errores de sesión.

  • prefix: Para FileStore, prefijo del archivo de sesión.

Método de ejemplo

NúmeroDescripción del método
1[ ]
Devolver el valor de la clave dada. Ver ejemplo.
2[ ]=
Establecer el valor de la clave dada. Ver ejemplo.
3eliminar
Llamar al método de eliminación de gestión de bases de datos de nivel inferior. Para FileStore, eliminar el archivo físico que contiene la sesión. Para MemoryStore, eliminar los datos de sesión de la memoria.
4actualizar
Llamar al método de actualización de gestión de bases de datos de nivel inferior. Para FileStore, escribir la sesión en el disco. Para MemoryStore, no tiene efecto.