Sesións
Unha sesión é un mecanismo que permite ao servidor manter información sobre un usuario ao longo de varias peticións HTTP, malia que HTTP sexa un protocolo sen estado.
A sesión garda datos como:
- Se o usuario está autenticado (logueado)
- Quen é
- Que ten no carriño da compra
- Preferencias temporais, etc.
A gran diferencia entre cookies e sesións e que a a información nas cookies gárdanse no cliente e en cambio nas sesións almacénanse no servidor. Isto non quita que as sesións necesiten as cookies.
Relación entre sesións e cookies
As cookies son usadas para identificar a sesión do usuario. Vexamos como funciona isto:
-
O servidor crea unha sesión cando o usuario entra por primeira vez (por exemplo, logo de facer login).
-
Gárdase esa sesión nunha base de datos ou na memoria do servidor, asociada a un identificador único (por exemplo:
sessid=abc123). -
Ese identificador de sesión envíase ao cliente a través dunha
cookie:Set-Cookie: PHPSESSID=abc123; Path=/; HttpOnly -
En cada petición posterior, o navegador envía automaticamente esa cookie:
Cookie: PHPSESSID=abc123 -
O servidor recibe o ID, consulta os datos da sesión asociada, e recupera toda a información sobre o usuario.
Por que utilizar sesións no lugar de cookies
| Problema coas cookies | Solución coas sesións |
|---|---|
| As cookies viaxan en cada petición o que provoca lentitude se a información que se almacena é moi grande. | A sesión garda os datos no servidor. |
| Os datos da cookie poden ser manipulados no cliente. | Os datos da sesión están protexidos no servidor. |
| Limite de tamaño en cookies (~4KB). | As sesións poden gardar moita máis información. |