# Gestión de sesiones

# Introducción

El soporte de sesiones de PHP es un medio para preservar datos entre varios accesos.

Cada visitante que accede a su página web se le asigna un identificador único, llamado "identificador de sesión". Puede almacenarse en una cookie o propagarse en la URL.

El soporte de sesiones permite almacenar datos entre las peticiones en el array superglobal $_SESSION. Cuando un visitante accede a su sitio, PHP verificará automáticamente (si session.auto_start está activado) o bajo demanda (explícitamente con session_start()) si existe una sesión con el mismo nombre. En caso afirmativo, el entorno previamente guardado será recreado.

Precaución

Si se activa session.auto_start entonces el único medio de poner objetos en la sesión es cargar las definiciones de clase con auto_prepend_file en el cual se cargan las definiciones necesarias, o bien se deberá utilizar serialize() en su objeto, y unserialize() para recuperarlo.

La variable $_SESSION (y todas las variables registradas) son serializadas internamente por PHP utilizando el gestor de serialización especificado por la opción de configuración session.serialize_handler, después de la ejecución del script PHP. Las variables que están indefinidas son marcadas como tales. En accesos posteriores, no estarán definidas, hasta que el usuario lo haga.

Advertencia

Debido a que los datos de sesión son serializados, las variables de tipo resource no pueden almacenarse en una sesión.

Los gestores de serialización (`php` y `php_binary`) heredan las limitaciones de register_globals. Por lo tanto, los índices numéricos o los índices en forma de string que contienen caracteres especiales (`|` y `!`) no pueden utilizarse. Su uso generará errores al final del script. `php_serialize` no tiene este tipo de limitaciones.

> Nota:

> Tenga en cuenta que al trabajar con sesiones, un registro en la sesión no será creado hasta que la variable sea registrada añadiendo una clave al array superglobal $_SESSION. Esto solo es válido si se ha iniciado una sesión llamando a la función session_start().

- Instalación/Configuración
  - Requerimientos
  - Instalación
  - Configuración en tiempo de ejecución
- Constantes predefinidas
- Ejemplos
  - Uso básico
  - Pasar el identificador de sesión (session ID)
  - Gestión personalizada de sesiones
- Progresión de una subida (upload) en sesión
- Sesiones y Seguridad
  - Gestión básica de sesiones
  - Seguridad de las configuraciones INI de sesión
- Funciones de sesión
  - session_abort — Interrumpe los cambios en el array de sesión y finaliza la sesión
  - session_cache_expire — Obtiene y/o define el tiempo de expiración de la caché
  - session_cache_limiter — Lee y/o modifica el limitador de caché de sesión
  - session_commit — Alias de session_write_close
  - session_create_id — Crear un nuevo ID de sesión
  - session_decode — Decodifica la información de sesión desde una cadena de sesión codificada
  - session_destroy — Destruye una sesión
  - session_encode — Codifica los datos de sesión
  - session_gc — Ejecuta la recolección de basura de los datos de sesión
  - session_get_cookie_params — Lee la configuración del cookie de sesión
  - session_id — Lee y/o modifica el identificador de sesión actual
  - session_module_name — Lee y/o modifica el módulo de sesión actual
  - session_name — Lee y/o modifica el nombre de la sesión
  - session_regenerate_id — Reemplaza el identificador de sesión actual por uno nuevo
  - session_register_shutdown — Función de cierre de sesiones
  - session_reset — Restablece el array de sesión con los valores originales
  - session_save_path — Lee y/o modifica la ruta de guardado de las sesiones
  - session_set_cookie_params — Modifica los parámetros de la cookie de sesión
  - session_set_save_handler — Configura las funciones de almacenamiento de sesiones
  - session_start — Inicia una nueva sesión o reanuda una sesión existente
  - session_status — Determina el estado de la sesión actual
  - session_unset — Destruye todas las variables de una sesión
  - session_write_close — Escribe los datos de sesión y cierra la sesión
- SessionHandler — La clase SessionHandler
  - SessionHandler::close — Cerrar la sesión
  - SessionHandler::create_sid — Devuelve un nuevo ID de sesión
  - SessionHandler::destroy — Destruir una sesión
  - SessionHandler::gc — Limpia las sesiones antiguas
  - SessionHandler::open — Inicializar una sesión
  - SessionHandler::read — Leer información de la sesión
  - SessionHandler::write — Escribir información de sesión
- SessionHandlerInterface — La clase SessionHandlerInterface
  - SessionHandlerInterface::close — Cerrar la sesión
  - SessionHandlerInterface::destroy — Destruir una sesión
  - SessionHandlerInterface::gc — Limpia las sesiones antiguas
  - SessionHandlerInterface::open — Inicializar una sesión
  - SessionHandlerInterface::read — Leer información de sesión
  - SessionHandlerInterface::write — Escribir información de sesión
- SessionIdInterface — La interfaz SessionIdInterface
  - SessionIdInterface::create_sid — Crear un ID de sesión
- SessionUpdateTimestampHandlerInterface — La interfaz SessionUpdateTimestampHandlerInterface
  - SessionUpdateTimestampHandlerInterface::updateTimestamp — Actualizar la marca de tiempo
  - SessionUpdateTimestampHandlerInterface::validateId — Validar el ID

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open