Establecer / Recuperar los valores de la cookie de sesión

Si utilizamos una cookie para pasar la sesión entre peticiones, los valores con los que se crea la cookie vienen determinados por las directivas de configuración session.cookie_xxxxxxxx definidas en el archivo php.ini.

Además, podemos usar las siguientes funciones para establecer nuevos valores o consultar los que se están utilizando para una sesión ya iniciada.

void session_set_cookie_params (int $duracion [,string $path
   [,string $dominio[, bool $segura]]] )
array session_get_cookie_params ( void )

Vamos a ver otro ejemplo en el que se utiliza el control de sesiones en un único script, para realizar las siguientes tareas:

  1. Iniciar una sesión o restaurar una ya existente.
  2. Comprobar la existencia de una determinada variable de sesión. Si no está presente, asumimos que la sesión es nueva.
  3. Utilizar variables de sesión: Incrementar un contador que almacena el número de veces que un usuario ha visitado esta página durante la sesión.
  4. Registrar variables: Almacenar el valor actualizado del contador en las variables de sesión.
  5. Realizar las modificaciones oportunas para que el script funcione en navegadores con soporte de cookies activo e inactivo
  • contador_sesiones.php
<?php
   // Iniciamos la sesión en el inicio del script
   // creamos una nueva o recuperamos valores de una ya existente
   session_start();
?>
<HTML>
   <HEAD><TITLE>Saludos</TITLE></HEAD>

   <BODY>
   <H2>Bienvenidos a nuestra página de pruebas de sesiones</H2>
   <?php
      // Si no existe la variable 'visitas', la creamos
      if ( !isset ($_SESSION['visitas']) ) {
         echo "Hola, parece que acabas de llegar. ¡Bienvenido!<BR>";
         // Inicializamos la variable de sesión 'visitas' a 1
         $_SESSION['visitas'] = 1;
      }
      // Si ya existe la variable 'visitas', actualizamos su valor
      else {
         // Recogemos el valor previo que tiene y lo incrementamos
         $visitas = $_SESSION['visitas'] + 1;
         echo '¿Ya estas de vuelta? ';
         echo 'Con esta van ' . $visitas . ' veces<BR>';
         // Actualizamos el valor de la variable de sesión
         $_SESSION['visitas'] = $visitas;
      }
      // Comprobamos si las cookies están activas o no
      $session_id = SID;
      if ( isset ($session_id) && $session_id) {
         $href = $_SERVER['PHP_SELF'] . '?'.
         $session_id;
      }
      else {
         $href = $_SERVER['PHP_SELF'];
      }
     ?>
     <BR>
     <A HREF="<?php echo $href;?>">Vuelve cuando quieras</A>
  </BODY>
</HTML>

Debemos notar que en la primera petición al script (la primera vez que se ejecuta en el servidor), todavía no se sabe si el cliente acepta cookies o no, así que el servidor, como medida preventiva, utiliza la constante especial **SID** (session id), con un valor similar a ** PHPSESSID=0jcsb9mvto8dtc7b9j3vq58430** (si vamos al directorio c:\wamp\tmp, veremos un archivo con nombre similar a ese identificador, que podemos abrir y ver su contenido).

Esto hace que el valor se pase como parte de la URL en la segunda solicitud (la primera vez que pulsamos sobre el enlace), y que no se pase nunca más si las cookies están activas en el navegador, o por el contrario, que se pase en todas y cada una de las solicitudes si las cookies no están activas.

results matching ""

    No results matching ""