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.
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.
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 imponen restricciones a las claves de
nivel raíz de $_SESSION.
Las claves anidadas dentro de arrays u objetos almacenados en la sesión
no están sujetas a estas restricciones.
No se permiten las siguientes claves de nivel raíz:
Las claves numéricas (por ejemplo $_SESSION[0]).
Estas claves se omiten al escribir la sesión, y se emite una
advertencia.
Las claves de tipo string que contienen | cuando se
utiliza el gestor de serialización php. El uso de
una clave de este tipo provoca un fallo en la escritura de la sesión
(y una advertencia a partir de PHP 8.5.0).
El gestor php_serialize no tiene estas limitaciones,
y puede utilizarse cuando deban almacenarse en la raíz de
$_SESSION claves numéricas o claves que contengan
|.
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 es válido independientemente de que se haya iniciado o no una sesión llamando a la función session_start().