Aproximación usando variables ocultas

Ya hemos comentado que cada petición HTTP se gestiona de forma independiente al resto, sin embargo, cada vez que un usuario pasa de una página a otra, normalmente lo hace a través de un enlace o bien mediante el envío de datos de un formulario.

Si en la primera página de un sitio web que se visita se pudiese generar un identificador único para cada visita, en cada salto de una página a otra se podría pasar este identificador, teniendo así la posibilidad de realizar un seguimiento de "algo" parecido a una sesión.

Veamos el siguiente código de ejemplo que podemos añadir al principio de cada página de nuestra aplicación:

<?php
   if ( !isset ( $_REQUEST['mi_id'] ) === true)
      $mi_id = generar_mi_id(); // ¡ojo! Funcion figurada
   else
      $mi_id = $_REQUEST['mi_id'];
?>

El fragmento de código anterior comprueba si la variable **mi_id** ha sido recibida como parte de la información que envió la página anterior. En este caso pueden ocurrir dos cosas:

  • Si se ha recibido, podemos asumir que estamos en una sesión, y además, que el identificador de la sesión para ese usuario es el valor de mi_id.

  • Si no se ha recibido, podemos asumir que estamos en la primera página de una nueva sesión, y por lo tanto, antes de proseguir debemos generar un identificador único (en este caso con la función generar_mi_id).

En cualquier caso, una vez ejecutado el código anterior tenemos la certeza de poseer un identificador único para la sesión, y lo "único" que debemos hacer es pasarlo a las siguientes páginas a través de todos los enlaces y formularios existentes en la página actual.

Cada enlace debe incluir un parámetro **mi_id** como parte de la URL. Este parámetro se pasará mediante **GET** y será visible como parte de la URL,

<A HREF="paginaX.php?mi_id=<?php echo $mi_id;?>">Siguiente</A>

El paso de identificadores de sesión mediante GET es probablemente el método menos seguro de mantener el estado en aplicaciones web.

Cada formulario deberá incluir un campo oculto con nombre **mi_id**. Si el formulario se envía mediante **POST** el valor del campo no será visible en la URL.

<FORM ACTION = "paginaX.php" METHOD = "POST">
  <!—Campos del formulario ->
  <INPUT TYPE="HIDDEN" NAME="mi_id" VALUE="<?php echo $mi_id;?>">
  <!—Otros campos del formulario ->
</FORM>

¿Qué problemas presenta esta técnica?
El gran problema es el mantenimiento, ya que cada enlace nuevo o formulario que se añada a la aplicación deberá contener el identificador para pasarlo hacia delante. Además de lo anterior, y los problemas de seguridad que puedan darse por la captación del identificador cuando viaja como parte de la URL, esta técnica funciona perfectamente como mecanismo para identificar y mantener sesiones (siempre que podamos generar identificadores únicos).

Una vez tenemos un identificador, podemos utilizar diferentes formas de asociar otro tipo de información con la sesión, por ejemplo usando el identificador como clave de los registros de una base de datos.

results matching ""

    No results matching ""