Skip to content

Código de Manejo de Cookies en PHP


1: Establecer Cookies

Antes de mostrar cookies, debemos establecerlas. Esto se hace utilizando la función setcookie().

<?php
// Establece una cookie llamada 'alumno' con el valor 'Antonio'
setcookie("alumno", "Antonio");

// Establece una cookie llamada 'software' con el valor del software del servidor y una duración de 1 hora
setcookie("software", $_SERVER['SERVER_SOFTWARE'], time() + 3600);

// Establece una cookie llamada 'TestCookie' con un valor genérico y una duración de 1 hora
setcookie("TestCookie", 'something from somewhere', time() + 3600);

// Establece otra cookie llamada 'TestCookie2' con el mismo valor y duración
setcookie("TestCookie2", 'something from somewhere', time() + 3600);
?>

Documentación:

  • setcookie(nombre, valor, duración):
  • nombre: El nombre de la cookie.
  • valor: El valor de la cookie.
  • duración: (Opcional) Tiempo de expiración en segundos desde el momento actual. Si no se especifica, la cookie expira cuando se cierra el navegador.

2: Redirigir para Asegurar la Disponibilidad de las Cookies

Las cookies recién creadas no están disponibles hasta la siguiente carga de la página. Para resolver esto, realizamos una redirección automática.

<?php
// Comprueba si la cookie 'reload' está definida
if (!isset($_COOKIE['reload'])) {
    // Si no está definida, crea una cookie temporal 'reload'
    setcookie('reload', '1', time() + 5);

    // Redirige a la misma página para cargar las cookies
    header("Location: " . $_SERVER['PHP_SELF']);
    exit(); // Detiene la ejecución del script para evitar que el resto del código se ejecute antes de la redirección
}
?>

Documentación:

  • $_SERVER['PHP_SELF']: Retorna el nombre del script que se está ejecutando, útil para redirigir a la misma página.
  • exit(): Finaliza la ejecución del script después de enviar la redirección.

3: Mostrar las Cookies Establecidas

Una vez que la página se recarga, las cookies estarán disponibles en el array $_COOKIE.

<!doctype html>
<html lang="es">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>UD 3 - Manejo de Cookies</title>
</head>

<body style="background-color:rgb(246,243,229);">

    <h2>Mostrando Cookies</h2>

    <?php
    // Muestra el valor de la cookie 'alumno', si está definida
    echo "<b>Autor:</b> " . ($_COOKIE["alumno"] ?? "Cookie no definida") . "<br>";

    // Muestra el valor de la cookie 'software', si está definida
    echo "<b>Estamos utilizando:</b> " . ($_COOKIE["software"] ?? "Cookie no definida") . "<br>";

    // Muestra el valor de la cookie 'TestCookie', si está definida
    echo "<b>Test Cookie1:</b> " . ($_COOKIE["TestCookie"] ?? "Cookie no definida") . "<br>";

    // Muestra el valor de la cookie 'TestCookie2', si está definida
    echo "<b>Test Cookie2:</b> " . ($_COOKIE["TestCookie2"] ?? "Cookie no definida") . "<br>";
    ?>

Documentación:

  • $_COOKIE["nombre"]: Devuelve el valor de la cookie llamada nombre.
  • ?? "Cookie no definida": Operador de coalescencia nula. Si la cookie no existe, muestra "Cookie no definida".

4: Mostrar Todas las Cookies Almacenadas

Para mostrar todas las cookies disponibles en el navegador, usamos la función print_r().

    <h3>Todas las cookies almacenadas:</h3>
    <pre>
    <?php print_r($_COOKIE); ?>
    </pre>

Documentación:

  • print_r(): Imprime un array en un formato legible.
  • $_COOKIE: Es un array asociativo que contiene todas las cookies enviadas al servidor.

5: Mostrar las Cookies en una Tabla

Finalmente, mostramos las cookies en una tabla HTML para una mejor visualización.

    <!-- Tabla que muestra todas las cookies almacenadas -->
    <table border="1" cellpadding="5" cellspacing="0">
        <thead>
            <tr>
                <th>Variable</th>
                <th>Valor</th>
            </tr>
        </thead>
        <tbody>
            <?php
            // Itera a través de todas las cookies almacenadas y las muestra en la tabla
            foreach ($_COOKIE as $variable => $valor) {
                echo "<tr>";
                echo "<td>" . htmlspecialchars($variable) . "</td>"; // Muestra el nombre de la cookie
                echo "<td>" . htmlspecialchars($valor) . "</td>"; // Muestra el valor de la cookie
                echo "</tr>";
            }
            ?>
        </tbody>
    </table>

</body>

</html>

Documentación:

  • foreach($_COOKIE as $variable => $valor): Recorre cada cookie y muestra su nombre ($variable) y su valor ($valor).
  • htmlspecialchars(): Convierte caracteres especiales en entidades HTML para evitar vulnerabilidades XSS.

Resumen del Flujo Completo:

  1. Establece las cookies utilizando setcookie().
  2. Comprueba si la página se ha recargado usando una cookie reload.
  3. Si es necesario, redirige a la misma página para cargar las cookies.
  4. Muestra las cookies establecidas en formato texto.
  5. Imprime todas las cookies disponibles utilizando print_r().
  6. Muestra las cookies en una tabla para una presentación más clara.