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 llamadanombre
.?? "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:
- Establece las cookies utilizando
setcookie()
. - Comprueba si la página se ha recargado usando una cookie
reload
. - Si es necesario, redirige a la misma página para cargar las cookies.
- Muestra las cookies establecidas en formato texto.
- Imprime todas las cookies disponibles utilizando
print_r()
. - Muestra las cookies en una tabla para una presentación más clara.