Tabla de contenidos
- 65.1. Introducción
- 65.2. Uso básico
- 65.3. Uso avanzado
- 65.3.1. Iniciando una sesión
- 65.3.2. Bloqueo de espacios de nombres de sesión
- 65.3.3. Expiración de espacios de nombres
- 65.3.4. Encapsulación de sesiones y controladores
- 65.3.5. Evitar múltiples instancias por espacio de nombres
- 65.3.6. Trabajar con arrays
- 65.3.7. Uso de sesiones con objetos
- 65.3.8. Uso de sesiones con pruebas unitarias
- 65.4. Gestión global de sesiones
- 65.4.1. Opciones de configuración
- 65.4.2. Error: Cabeceras ya enviadas
- 65.4.3. Identificadores de sesión
- 65.4.4. rememberMe(integer $seconds)
- 65.4.5. forgetMe()
- 65.4.6. sessionExists()
- 65.4.7. destroy(bool $remove_cookie = true, bool $readonly = true)
- 65.4.8. stop()
- 65.4.9. writeClose($readonly = true)
- 65.4.10. expireSessionCookie()
- 65.4.11. setSaveHandler(Zend_Session_SaveHandler_Interface $interface)
- 65.4.12. namespaceIsset($namespace)
- 65.4.13. namespaceUnset($namespace)
- 65.4.14. namespaceGet($namespace)
- 65.4.15. getIterator()
- 65.5. Zend_Session_SaveHandler_DbTable
El equipo de Zend Framework Auth agradece enormemente sus comentarios y contribuciones en nuestra lista de correo: fw-auth@lists.zend.com
En las aplicaciones web escritas usando PHP, una sesión
representa una conexión lógica, uno a uno, entre datos de estado persistentes del lado del
servidor y un cliente de agente de usuario particular (por ejemplo, un navegador web). Zend_Session ayuda
a gestionar y preservar los datos de sesión, un complemento lógico de los datos de cookies, a través de múltiples
peticiones de página del mismo cliente. A diferencia de los datos de cookies, los datos de sesión no se almacenan en el lado
del cliente y solo se comparten con el cliente cuando el código fuente del lado del servidor pone
voluntariamente los datos a disposición en respuesta a una petición del cliente. A efectos de este componente y
esta documentación, el término "datos de sesión" se refiere a los datos del lado del servidor almacenados en $_SESSION,
gestionados por Zend_Session, y manipulados individualmente por
los objetos accesores de Zend_Session_Namespace.
Los espacios de nombres de sesión proporcionan acceso a los datos de sesión usando los clásicos espacios de nombres
implementados lógicamente como grupos con nombre de arrays asociativos, indexados por cadenas (similar a
los arrays normales de PHP).
Las instancias de Zend_Session_Namespace son objetos accesores para porciones
con espacio de nombres de $_SESSION. El componente Zend_Session
envuelve la extensión ext/session existente de PHP con una interfaz de administración y gestión,
además de proporcionar una API para que
Zend_Session_Namespace persista los espacios de nombres de sesión.
Zend_Session_Namespace proporciona una interfaz estandarizada y orientada a objetos
para trabajar con espacios de nombres persistidos dentro del mecanismo de sesión estándar de PHP.
Existe soporte tanto para espacios de nombres de sesión anónimos como autenticados (por ejemplo, de "inicio de sesión").
Zend_Auth, el componente de autenticación de Zend
Framework, utiliza Zend_Session_Namespace para almacenar cierta información
asociada con usuarios autenticados. Dado que Zend_Session utiliza
internamente las funciones normales de ext/session de PHP, se aplican todas las
opciones y ajustes de configuración habituales (véase http://www.php.net/session), con bonificaciones
como la comodidad de una interfaz orientada a objetos y un comportamiento por defecto que proporciona tanto
buenas prácticas como una integración fluida con Zend Framework. Así, un
identificador de sesión estándar de PHP, ya sea transmitido mediante cookie o dentro de
URLs, mantiene la asociación entre un cliente y los datos de estado de la sesión.
El
manejador de guardado de ext/session
por defecto no mantiene esta asociación para clústeres de servidores en ciertas
condiciones, ya que los datos de sesión se almacenan en el sistema de archivos del servidor que respondió a
la petición. Si una petición puede ser procesada por un servidor distinto de aquel en el que se encuentran
los datos de sesión, entonces el servidor que responde no tiene acceso a los datos de sesión (si
no están disponibles desde un sistema de archivos en red). Se proporcionará una lista de manejadores de guardado
adicionales apropiados, cuando estén disponibles. Se anima a los miembros de la comunidad a sugerir y
enviar manejadores de guardado a la lista fw-auth@lists.zend.com. Se ha publicado en la lista un
manejador de guardado compatible con Zend_Db.