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.
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