## Pasar el identificador de sesión (session ID)

Existen dos métodos de propagación del identificador de sesión:

- Cookies
- Por URL

El módulo de sesión soporta ambos métodos. Las cookies son óptimas, pero como no son seguras (no todos los internautas las aceptan), no son fiables. El segundo método coloca el identificador de sesión directamente en las URL.

PHP es capaz de hacerlo de manera transparente. Si la opción de compilación `session.use_trans_sid` está activada, las URL relativas se modificarán para contener el identificador de sesión automáticamente.

> Nota:

> La opción arg_separator.output de php.ini permite personalizar el separador de argumentos. Para estar completamente de acuerdo con las especificaciones XHTML, especifique &amp; aquí.

Alternativamente, se puede utilizar la constante `SID` que está definida si la sesión ha comenzado. Si el cliente no envía una cookie de sesión apropiada, tendrá la forma `session_name=session_id`. De lo contrario, valdrá una cadena vacía. Así, en todos los casos se puede incluir en la URL.

El siguiente ejemplo muestra cómo almacenar una variable y cómo realizar un enlace correcto a otra página, con `SID`.

Ejemplo #1 Contar el número de visitas de un usuario a una página

    <?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 utiliza al mostrar el `SID` con el fin de contrarrestar los ataques XSS.

La visualización del `SID`, como se muestra en el ejemplo anterior, no es necesaria si --enable-trans-sid se ha utilizado para compilar PHP.

> Nota:

> Las URL no relativas se consideran externas al sitio y no recibirán el `SID`, ya que la fuga del `SID` a un servidor diferente presenta un riesgo de seguridad importante.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open