Integración de funciones con sistema de sesiones en PHP

Clase 31 de 33Curso de PHP Avanzado

Resumen

Optimizar la gestión de información y errores mediante la integración directa con un sistema de sesiones representa una mejora significativa en la experiencia de usuario y la lógica de programación. En este contenido, aprenderás cómo trabajar con funciones de sesión y validación para recuperar datos de formularios, almacenar mensajes y evitar la pérdida de información importante al detectar errores.

¿Cómo adaptar una función para utilizar sesiones en PHP?

La función old trabajaba originalmente con una variable predefinida llamada post, ahora se modifica para obtener datos directamente desde el sistema centralizado de sesiones. Para ello, se define una llave específica, por ejemplo "old", y se utiliza la función get flash del sistema de sesiones acompañada de un valor predeterminado.

El código adaptado se vería así:

$key = "old" . $key;
sesion()->getFlash($key, $default);

¿De qué manera conservar datos tras la validación del formulario?

Para conservar los datos llenados al regresar al formulario después de una validación incorrecta o redireccionamiento, se utiliza la función de tipo flash. Esto permite almacenar temporalmente los datos ingresados en sesiones, pudiendo recuperarlos fácilmente. El proceso implica:

  • Recorrer la información obtenida del formulario.
  • Crear un nuevo dato temporal (flash) asignado a una clave específica, como por ejemplo "_titulo".

Un ejemplo claro sería:

sesion()->flash("all", ["_titulo" => $titulo]);

Este método permite que los datos ingresados sean visibles aún después de una redirección generada por errores o validaciones incorrectas.

¿Cómo manejar eficazmente errores en los sistemas de autenticación?

Para mejorar la experiencia del usuario durante el inicio de sesión, es fundamental proporcionar retroalimentación precisa cuando ocurre un error:

  • Si las credenciales son incorrectas, guardar el email ingresado previamente.
  • Mostrar al usuario un mensaje claro y específico indicando que la combinación de correo y contraseña puede ser inválida.

El siguiente ejemplo ilustra claramente esta lógica:

if (!autenticar($email, $password)) {
  sesion()->flash("errores", ["El correo y la contraseña pueden ser inválidos."]);
  sesion()->flash("datos", ["email" => $email]);
  return back();
}

¿Qué hacer cuando se envían strings en lugar de arreglos como errores?

Para evitar errores cuando accidentalmente se envían cadenas de texto en lugar de arreglos en el manejo de errores, puedes verificar primero si el valor recibido es un arreglo y, de no serlo, convertirlo en uno:

if (!is_array($errores)) {
  $errores = [$errores];
}

¿Cómo prevenir la creación de listas vacías en HTML por errores inexistentes?

Para mantener un código HTML más limpio y profesional, evita generar listas vacías cuando no hay errores. Puedes utilizar una condición sencilla que verifique si los errores existen antes de renderizar la lista:

 if (!empty($errores)): ?>
    foreach ($errores as $error): ?>
  • echo $error; ?>
  • endforeach; ?>
endif; ?>

Esto asegura que tu página permanezca limpia y solo se desplieguen mensajes relevantes al usuario.

Te invitamos a implementar estas técnicas y compartir en los comentarios un sistema similar para mostrar mensajes de éxito después de actualizar o crear algún recurso.