El camarero se acuerda de ti
Entras en tu bar de siempre. El camarero dice: "¿Lo de siempre?". Se acuerda de ti.
Un servidor no. Cada petición es una persona nueva para él.
Entonces, ¿cómo sabe una web que sigues dentro de tu cuenta? Hoy lo descubres.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Cookie | Una nota pequeña que el servidor pide al navegador que guarde. | theme=dark |
| Sesión | Los datos de una visita, guardados en el servidor. | $_SESSION["user_id"] |
| Identificador de sesión | Un número largo al azar que une al navegador con su sesión. | PHPSESSID=a8f3k2 |
| session_start | La orden que abre la sesión o recupera la que ya existe. | session_start(); |
| Hash | Un texto raro que sale de una contraseña y no se puede deshacer. | password_hash($password, PASSWORD_DEFAULT) |
| Cerrar sesión | Borrar los datos de la sesión para que nadie entre con ella. | session_destroy(); |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
La web no tiene memoria
Ya lo viste: el navegador pide, el servidor responde y se olvida. Cada petición empieza de cero.
Para recordar algo entre dos peticiones hace falta un sitio donde guardarlo.
Ese sitio es la sesión. Primero la simulamos con un array.
Pruébalo: contar visitas
<?php
// Un array hace de "sesión". En una web real sería $_SESSION.
function addVisit(array $session): array {
$session["visits"] = ($session["visits"] ?? 0) + 1;
return $session;
}
$session = [];
$session = addVisit($session);
$session = addVisit($session);
$session = addVisit($session);
echo "Visitas: " . $session["visits"] . "\n";
// Llama a addVisit una vez más.
Cookie y sesión trabajan juntas
Una cookie vive en el navegador. Cualquiera con acceso a ese ordenador puede verla.
Una sesión vive en el servidor. Allí guardas lo importante, como quién es la persona.
En el navegador solo queda una cookie con un número largo, el identificador. Con ese número el servidor busca los datos.
Una sesión de verdad
<?php
// Siempre en la primera línea, antes de escribir nada.
session_start();
// La primera vez no existe: ?? da 0.
$visits = ($_SESSION["visits"] ?? 0) + 1;
$_SESSION["visits"] = $visits;
echo "Esta es tu visita número " . $visits;
Repaso rápido: cookies y sesiones
Inténtalo
Repaso rápido: cookies y sesiones
3 preguntasTus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.
Ejemplo resuelto: cookie frente a sesión
| Cookie | Sesión | |
|---|---|---|
| ¿Dónde vive? | En el navegador | En el servidor |
| ¿Quién puede verla? | La persona del ordenador | Solo el servidor |
| Buena para | El tema oscuro, el idioma | Quién ha iniciado sesión |
| ¿Se puede guardar una contraseña? | Nunca | Nunca |
| Cómo se lee en PHP | $_COOKIE["theme"] | $_SESSION["user_id"] |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.