&reftitle.examples;
Uso básico 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. Registrar una variable con <varname>$_SESSION</varname>. ]]> Dejar de registrar una variable con <varname>$_SESSION</varname> y <link linkend="ini.register-globals">register_globals</link> deshabilitado. ]]> NO destruya completamente $_SESSION con unset($_SESSION) ya que esto deshabilitará el registro de las variables a través de la matriz superglobal $_SESSION. 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. 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.
Pasar el ID de Sesión Hay dos métodos para propagar un id de sesión: Cookies Parámetro de URL El módulo de sesiones soporta ambos métodos. Las cookies son óptimas, pero ya que no están siempre disponibles, también se proporciona una manera alternativa. El segundo método embebe el id de sesión directamente en las URL. PHP es capaz de transformar enlaces transparentemente. A menos que se use PHP 4.2.0 o posterior, se necesita habilitarlo manualmente cuando se construye PHP. Bajo Unix, pase --enable-trans-sid para la configuración. Si esta opción de construcción y la opción en tiempo de ejecución session.use_trans_sid están habilitadas, las URI relativas se modificarán para contener el id de sesión automáticamente. La directiva de &php.ini; arg_separator.output permite personalizar el separador de argumentos. Para una conformidad completa con XHTML, especifique &amp; allí. Alternativamente, se puede usar la constante SID, que está definida si la sesión se inició. Si el cliente no envía una cookie de sesión apropiada, tiene la forma session_name=session_id. De otro modo se desarrolla en una cadena vacía. Así, se puede embeberla incondicionalmente dentro de las URL. El siguiente ejemplo muestra cómo registrar una variable, y cómo enlazar correctamente a otra página usando SID. Contar el número de peticiones de un sólo usuario

Hola visitante, ha visto esta página veces.

Para continuar, haga clic aquí.

]]>
La función htmlspecialchars se puede usar cuando se imprime SID para prevenir ataques relacionados con XSS. Imprimir SID, como se mostró arriba, no es necesario si --enable-trans-sid se usó para compilar PHP. Se asume que las URL no relativas apuntan a sitios externos y por lo tanto no añaden SID, ya que sería un riesgo para la seguridad filtrar SID a un servidor diferente.
Gestores de Sesión Personalizados Para implementar el almacenamiento en bases de datos, o cualquier otro método de almacenamiento, se necesita usar session_set_save_handler para crear un conjunto de funciones de almacenamiento a nivel de ususario.