Manejo de sesionesSesiones
&reftitle.intro;
El soporte para sesiones en PHP consiste en una forma de preservar cierta información
a lo largo de accesos subsiguientes.
A un visitante que accede a un sitio web se el asigna un id único,
también llamado id de sesión. Éste es almacenado en una cookie en la
parte del cliente o se propaga en el URL.
El soporte para sesiones permite almacenar los datos entre peticiones en el array
superglobal $_SESSION. Cuando un visitante acceda
a un sitio web, 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), si se ha enviado un id de sesión
específico con la petición. Si éste es el caso, se recrea
el entorno anteriormente guardado.
Si se activa
session.auto_start, la única manera de colocar objetos
en las sesiones es cargar su definición de clase usando
auto_prepend_file ,
en el que, además de cargar la definición de clase, se tendrá que
emplear serialize para serializar el objeto
y unserialize para deserializarlo
después.
$_SESSION (y todas las variables registradas) son serializadas
internamente por PHP utilizando el gestor de serialización especificado en el
ajuste ini session.serialize_handler,
una vez finalizada la solicitud. Las variables registradas que están sin definir son
marcadas como no definidas. En accesos subsiguientes, éstas no estarán definidas
por el módulo de sesión a menos que el usuario las defina después.
Debido a que los datos de sesión son serializados, las variables resource
no pueden ser almacenadas en la sesión.
Los gestortes serializados (php
y php_binary) heredan las limitaciones de
register_globals. Por lo tanto, no se pueden usar índices númericos o de string
que contengan los caracteres especiales (|
y !). Si se utilizan, se finalizará
con errores al cierre del script. php_serialize
no tiene tales limitaciones. php_serialize
está disponible desde PHP 5.5.4.
Por favor, observe que al trabajar 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 al array superglobal $_SESSION. Esto siempre es
así, sin importar si una sesión ha sido iniciada usando la
función session_start.
PHP 5.2.2 introdujo una característica no documentada para almacenar ficheros 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.
&reference.session.setup;
&reference.session.constants;
&reference.session.examples;
&reference.session.upload-progress;
&reference.session.security;
&reference.session.reference;
&reference.session.sessionhandler;
&reference.session.sessionhandlerinterface;