Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Vista previa

Sesiones y cookies

Esta es la primera página de la lección. Léela y prueba las actividades. El resto está en el curso completo.

40 minutos

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

PalabraQué significaEjemplo
CookieUna nota pequeña que el servidor pide al navegador que guarde.theme=dark
SesiónLos datos de una visita, guardados en el servidor.$_SESSION["user_id"]
Identificador de sesiónUn número largo al azar que une al navegador con su sesión.PHPSESSID=a8f3k2
session_startLa orden que abre la sesión o recupera la que ya existe.session_start();
HashUn texto raro que sale de una contraseña y no se puede deshacer.password_hash($password, PASSWORD_DEFAULT)
Cerrar sesiónBorrar 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

Código: php
<?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

Código: php
<?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 preguntas
Pruébalo: tus respuestas se corrigen aquí y después se olvidan. Inicia sesión si quieres que se guarde tu puntuación y continuar donde lo dejaste.Iniciar sesión para guardar tu puntuación

Tus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.

Ejemplo resuelto: cookie frente a sesión

CookieSesión
¿Dónde vive?En el navegadorEn el servidor
¿Quién puede verla?La persona del ordenadorSolo el servidor
Buena paraEl tema oscuro, el idiomaQuién ha iniciado sesión
¿Se puede guardar una contraseña?NuncaNunca
Cómo se lee en PHP$_COOKIE["theme"]$_SESSION["user_id"]

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

La lección continúa

13 partes más de esta lección están en el curso completo, con los ejercicios y la comprobación final. Una cuenta te da todo.