array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'es', ), 'this' => array ( 0 => 'intro.session.php', 1 => 'Introducción', ), 'up' => array ( 0 => 'book.session.php', 1 => 'Sesiones', ), 'prev' => array ( 0 => 'book.session.php', 1 => 'Sesiones', ), 'next' => array ( 0 => 'session.setup.php', 1 => 'Instalación/Configuración', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'es', 'path' => 'reference/session/book.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
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 le 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.
Nota:
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().
Nota:
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.