Saltar la navegación

3.6.- Gestión de la información de la sesión (IV).

Si desde la página del listado de productos, el usuario pulsa sobre el botón "Ir a Cesta", se le dirige a la página de la Cesta de la compra "cesta.php", en la que se le muestra un resumen de los productos que ha seleccionado junto al importe total de los mismos.

Imagen de una página web que contiene arriba a la derecha el icono de un carrito y un 6 y despues un logo de usuario y el nombre admin seguido del boton salir. En el centro el texto comprar producto y debajo en fondo verde con texto blanco un listado de productos y su precio, debajo el total de todos los productos y el botón pagar y volver.
Captura de pantalla del navegador. (Elaboración propia.)

La página se divide en varias partes:

  • Al principio, como ya explicamos en el apartado anterior comprobamos que existe la variable $_SESSION['nombre'], redireccionándonos a login si no es así. Hacemos el require_once de conexión y recorriendo los valores del array $_SESSION['cesta'] (recuerda que almacenaba los id de los productos seleccionados) inicializamos un array con el nombre y el precio de los mismos. Para ello utilizamos la función recuperarProducto($id) de "conexión.php".
    if(!isset($_SESSION['nombre'])){
        header('Location:login.php');
    }
    require_once 'conexion.php';
    if(isset($_SESSION['cesta'])){
        foreach($_SESSION['cesta'] as $k=>$v){
            $producto=consultarProducto($k);
            $listado[$k]=[$producto->nombre, $producto->pvp];
            $producto=null;
        }
        cerrar($conProyecto);
    }
  • Encabezado, la cantidad de productos del carro, el usuario con el que estamos validados y el botón "Salir" es exactamente igual que en la página "listado.php".

  • Listado de productos, un listado de los productos añadidos (nombre y precio) y la suma de los precios.
    <?php
        if(!isset($_SESSION['cesta'])){
            echo "<p class='card-text'>Carrito Vacio</p>";
        }
        else{
            $total=0;
            echo "<p class='card-text'>";
            echo "<ul>";
            foreach($listado as $k=>$v){
                echo "<li>$v[0], PVP ($v[1]) €.</li>";
                $total+=$v[1];
            }
            echo "</ul></p>";
            echo "<hr style='border:none; height:2px; background-color: white'>";
            echo "<p class='card-text'><b>Total:</b><span class='ml-3'>$total (€)</span></p>";
        }
    ?>
  • Botones "Volver" y "Comprar". Son un enlace a "listado.php" y "pagar.php" respectivamente.
    <a href="listado.php" class="btn btn-primary mr-2">Volver</a>
    <a href="pagar.php" class="btn btn-danger">Pagar</a>

La página "pagar.php" (es una página sencilla que nos da la opción a hacer otra compra o a salir).

El contenido de la página  "cerrar.php" sería:

<?php
session_start();
unset($_SESSION['nombre']);
unset($_SESSION['cesta']);
header('Location:login.php');

 

  • Descargar "cesta.php": cesta (pdf - 39,87 KB)
  • Descargar "cerrar.php": cerrar (pdf - 22,43 KB)
  • Descargar "pagar.php": pagar (pdf - 19,31 KB)
  • Descargar "cesta.zip": Todo el Proyecto. (zip - 6,74 KB)

Con esto ya estaría terminado este proyecto. Recuerda que puedes introducirle cantidad de mejoras, y que hay múltiples formas de hacer lo mismo.

.

Citas Para Pensar

Somos lo que hacemos repetidamente. La excelencia, entonces, no es un acto sino un hábito.

Aristóteles.

Autoevaluación

Pregunta

En el proyecto anterior un usuario validado tenia acceso a todas las páginas del proyecto ¿Podríamos establecer restricciones de acceso a distinto usuarios?

Respuestas

Sí.

No.

Retroalimentación