Pasar el ID de Sesión
Hay dos métodos para propagar un id de sesión:
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.
Nota:
La directiva de php.ini arg_separator.output
permite personalizar el separador de argumentos. Para una conformidad completa con
XHTML, especifique & 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
.
Ejemplo #1 Contar el número de peticiones de un sólo usuario
<?php
session_start();
if (empty($_SESSION['count'])) {
$_SESSION['count'] = 1;
} else {
$_SESSION['count']++;
}
?>
<p>
Hola visitante, ha visto esta página <?php echo $_SESSION['count']; ?> veces.
</p>
<p>
Para continuar, <a href="nextpage.php?<?php echo htmlspecialchars(SID); ?>">haga clic
aquí</a>.
</p>
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.
Nota:
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.