El soporte para sesiones en PHP consiste en una forma de preservar cierta información a través de accesos subsiguientes. Esto habilita la construcción de aplicaciones más personalizadas e incrementar el atractivo de su sitio web.
Un visitante que accede a su sitio web se el asigna un id único, también llamado id de sesión. Éste es almacenado en una cookie en el lado del cliente o se propaga en la URL.
El soporte para sesiones le permite registrar un número arbitrario de variables para preservarlas a través de las peticiones. Cuando un visitante accede a su sitio, PHP comprobará automáticamente (si session.auto_start está establecido a 1) o sobre su petición (explícitamete a través de session_start() o implícitamente a través de session_register()) si un id de sesión específico ha sido enviado con la petición. Si éste es el caso, se recrea el entorno anteriormente guardado.
Si activa session.auto_start entonces la única manera de poner objetos en sus sesiones es cargar su definición de clase usando auto_prepend_file en el que puede cargar la definición de clase y tendrá que usar serialize() para serializar su objeto y unserialize() para deserializarlo dsepués.
Todas las variables registradas son serializadas después de que la petición finalice. Las variables registradas que están sin definir son marcadas como no definidas. En accesos subsiguientes, éstas no están definidas por el módulo de sesión a menos que el usuario las defina después.
Algunos tipos de información no se pueden serializar por lo que no pueden almacenarse en sesiones. Esto incluye variables resource u objetos con referencias circulares (es decir, objetos que pasan una referencia de sí mismos a otro objeto).
Note:
Por favor, observe que, trabajando con sesiones no se crea un registro de una sesión hasta que una variable haya sido registrada usando la función session_register() o añadiendo una nueva clave a la matriz superglobal $_SESSION. Esto es verdadero sin importar si una sesión ha sido iniciada usando la función session_start().
Note:
PHP 5.2.2 introdujo una característica no documentada para almacenar archivos de sesiones en "/tmp" incluso si open_basedir estaba habilitado y "/tmp" no estaba explícitamente añadido a la lista de rutas permitidas. Esta característica ha sido eliminada de PHP a partir de PHP 5.3.0.