Ejemplos
PHP Manual

Note:

A partir de PHP 4.1.0, $_SESSION está disponible como una variable global como $_POST, $_GET, $_REQUEST, etc. A diferencia de $HTTP_SESSION_VARS, $_SESSION es siempre global. Por lo tanto, no se necesita usar la palabra clave global para $_SESSION. Por favor, observe que esta documentación ha sido modifiada para usar $_SESSION en cualquier lugar. Puede sustituir $HTTP_SESSION_VARS por $_SESSION, si prefiere la antigua. Observe también que se debe iniciar una sesión usando session_start() antes de que el uso de $_SESSION esté disponible.

Las claves en la matriz asociativa $_SESSION están sujetas a las mismas limitaciones que los nombres de las variables normales de PHP, esto es, no pueden comenzar con un número y deben comenzar con una letra o guión de subrayado. Para más detalles vea la sección sobre variables en este manual.

Si register_globals está deshabilitado, sólo los miembros de la matriz asociativa global $_SESSION pueden ser registrados como variables de sesión. Las variables de sesión almacenadas sólo estarán disponibles en la matriz $_SESSION.

Se recomienda el uso de $_SESSION (o $HTTP_SESSION_VARS con PHP 4.0.6 o anterior) para mejorar la seguridad y la legibilidad del código. Con $_SESSION no hay necesidad de usar las funciones session_register(), session_unregister() o session_is_registered(). Las variables de sesión son accesibles como cualquier otra variable.

Example #1 Registrar una variable con $_SESSION.

<?php
session_start
();
// Use $HTTP_SESSION_VARS con PHP 4.0.6 o anterior
if (!isset($_SESSION['count'])) {
  
$_SESSION['count'] = 0;
} else {
  
$_SESSION['count']++;
}
?>

Example #2 Dejar de registrar una variable con $_SESSION y register_globals deshabilitado.

<?php
session_start
();
// Use $HTTP_SESSION_VARS con PHP 4.0.6 o anterior
unset($_SESSION['count']);
?>

Caution

NO destruya completamente $_SESSION con unset($_SESSION) ya que esto deshabilitará el registro de las variables a través de la matriz superglobal $_SESSION.

Warning

No se pueden usar referencias en variables de sesión ya que no hay una manera viable de restarurar una referencia a otra variable.

Si register_globals está habilitado, cada variable global puede ser segistrada como variable de sesión. Sobre una restauración de una sesión, estas variables serán restauradas a las variables globales correspondientes. Ya que PHP debe conocer qué variables globales están registradas como variables de sesión, los usuarios necesitan registrar las variables con la función session_register(). Se puede evitar esto estableciendo simplemente entradas en $_SESSION.

Caution

Antes de PHP 4.3.0, si está usando $_SESSION y tiene deshabilitado register_globals, no use session_register(), session_is_registered() o session_unregister(). Se recomienda deshabilitar register_globals por razones de seguridad y rendimiento.

Si register_globals está habilitado, las variables globales y las entradas de $_SESSION referenciarán automáticamente los mismos valores que fueron registrados en la instancia de sesión anterior. Sin embargo, si la variable es registrada mediante $_SESSION, la variable global está disponible desde la siguiente petición.

Existe un defecto en PHP 4.2.3 y anteriores. Si se registra una nueva variable de sesión usando session_register(), la entrada en el ámbito global y la entrada de $_SESSION no referenciarán el mismo valor hasta el siguiente uso de session_start(). Esto es, una modificación en la variable global registrada más recientemenet no será reflejada por la entrada de $_SESSION. Esto ha sido corregido en PHP 4.3.0.


Ejemplos
PHP Manual