PHP: Sesiones y cookies

PHP
PHP
Actualizado: 13/03/2025

¡Desbloquea el curso completo!

IA
Ejercicios
Certificado
Entrar

Las sesiones y las cookies son mecanismos esenciales para retener información entre diferentes peticiones en aplicaciones web. En PHP, ambos se usan para personalizar la experiencia del usuario y preservar datos, como credenciales de inicio de sesión o configuraciones específicas, a lo largo de la navegación.


Sesiones en PHP

Las sesiones son archivos de servidor en los que se almacena información vinculada a un cliente concreto. Cada sesión está identificada por un ID único que se asocia con el cliente mediante una cookie.

Creación y configuración de sesiones

Antes de acceder o modificar datos de sesión, se llama a la función session_start():

<?php
session_start(); // Inicia o reanuda la sesión
$_SESSION["usuario"] = "Carlos";
$_SESSION["rol"] = "Administrador";

echo "Sesión creada para el usuario: " . $_SESSION["usuario"];
?>
  • session_start() debe ser la primera instrucción del script, sin que exista salida previa en el navegador.
  • La variable superglobal $_SESSION permite almacenar información que persiste mientras dure la sesión.

Recuperación y eliminación de datos de sesión

Para obtener datos almacenados, se recurre a $_SESSION en cualquier archivo que haya invocado session_start():

<?php
session_start();
if (isset($_SESSION["usuario"])) {
    echo "Bienvenido, " . $_SESSION["usuario"];
} else {
    echo "Sesión no iniciada.";
}
?>

Para eliminar variables de sesión concretas, se puede usar unset():

<?php
unset($_SESSION["rol"]); // Elimina la variable 'rol' de la sesión
?>

Si se desea finalizar por completo la sesión, se llaman las siguientes funciones:

<?php
session_start();
session_unset(); // Limpia todas las variables de sesión
session_destroy(); // Destruye la sesión
?>

Uso de cookies en PHP

Las cookies se guardan en el navegador del usuario y permiten recordar preferencias u otra información específica. A diferencia de las sesiones, estos datos se mantienen en el cliente y tienen una fecha de caducidad.

Creación de cookies

Para crear una cookie, PHP ofrece la función setcookie():

<?php
$nombreCookie = "preferencias";
$valorCookie = "tema=oscuro";
$tiempoExpiracion = time() + (60 * 60 * 24); // 1 día

setcookie($nombreCookie, $valorCookie, $tiempoExpiracion, "/");
echo "Cookie 'preferencias' creada.";
?>
  • El primer parámetro es el nombre de la cookie.
  • El segundo es el valor.
  • El tercero define la expiración, en este caso, 24 horas desde el momento actual.
  • El último argumento indica la ruta en la que la cookie será válida ("/" para todo el sitio).

Lectura de cookies

Las cookies se acceden mediante la variable superglobal $_COOKIE:

<?php
if (isset($_COOKIE["preferencias"])) {
    echo "Tus preferencias: " . $_COOKIE["preferencias"];
} else {
    echo "No se han definido preferencias.";
}
?>

Eliminación de cookies

Para eliminar una cookie, se le asigna una fecha de caducidad pasada:

<?php
setcookie("preferencias", "", time() - 3600, "/");
echo "Cookie 'preferencias' eliminada.";
?>

Consideraciones de seguridad

Guarda tu progreso

Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.

Progreso guardado
Asistente IA
Ejercicios
Iniciar sesión gratis

Más de 25.000 desarrolladores ya confían en CertiDevs

  • HTTPS: Emplear protocolos seguros (HTTPS) evita la captura de cookies y los ataques de tipo sniffing.
  • HttpOnly: Al establecer una cookie, usar la bandera HttpOnly para impedir que sea accesible desde scripts del lado del cliente y así disminuir el riesgo de ataques XSS.
  • Regenerar ID de sesión: Tras iniciar sesión, es aconsejable renovar el ID de la sesión con session_regenerate_id(true) para mitigar ataques de fijación de sesión.
  • Validar datos: Verificar la validez de la información en la sesión o las cookies antes de utilizarla en cualquier proceso sensible (como transacciones).

Buenas prácticas finales

  • Almacena solo los datos imprescindibles en cookies, ya que viajan en cada petición y pueden afectar el rendimiento.
  • Emplea las sesiones para información sensible, como detalles de autenticación, ya que reside en el servidor y es menos vulnerable a manipulaciones.
  • Cierra las sesiones cuando el usuario cierre sesión o si ha pasado un tiempo prolongado de inactividad, para prevenir accesos no autorizados.
  • Mantén una estructura clara en tu proyecto, diferenciando controladores de sesión, lógica de negocio y presentación.

Completa PHP y certifícate

Únete a nuestra plataforma y accede a miles de tutoriales, ejercicios prácticos, proyectos reales y nuestro asistente de IA personalizado para acelerar tu aprendizaje.

Asistente IA

Resuelve dudas al instante

Ejercicios

Practica con proyectos reales

Certificados

Valida tus conocimientos

Más de 25.000 desarrolladores ya se han certificado con CertiDevs

⭐⭐⭐⭐⭐
4.9/5 valoración