14 Como VERIFICAR CONTRASEÑA ENCRIPTADA del USUARIO en el Sistema de Ventas con (PHPyMySql)FullStack

Duración: 26 min
Módulo: 👤 CRUD de Usuarios y Roles (Seguridad Lógica) Lección 6 de 17

Descripción

🔐 Lección 14: Cómo Verificar Contraseña Encriptada del Usuario

Esta lección resuelve el problema crítico de iniciar sesión después de encriptar las contraseñas, enseñando a usar la función password_verify() de PHP en el controlador de login. También se abordan mejoras de usabilidad en la vista.

🔑 Verificación Segura de Contraseña (password_verify)

IconoDetalleDescripciónTimestamp
1. 🔍 Búsqueda InicialLa consulta SQL de login se modifica para buscar al usuario solamente por el email (WHERE email = :email), ignorando la contraseña por el momento [03:38]. Esto recupera el registro completo, incluyendo el hash de la contraseña guardada [04:40].[03:38] 
2. 🔄 Lógica del ContadorSe verifica que el contador sea mayor a cero ($contador > 0), lo que confirma que el email existe en la base de datos [05:55].[06:05] 
3. ✅ Función de VerificaciónSe utiliza la función password_verify() dentro del if principal de la lógica de login [06:37].[06:43] 
4. ➡️ Parámetrospassword_verify() compara dos valores [07:09]:[07:09] 
 a. Contraseña del Formulario: La clave en texto plano introducida por el usuario [07:18].  
 b. Contraseña Encriptada (Hash): El hash recuperado directamente desde la tabla de la base de datos [07:29].  
5. 🚪 Acceso ExitosoSi el correo existe Y la verificación de password_verify() es correcta, el usuario es redirigido con éxito al sistema [09:02].[09:02] 

⚙️ Mejoras de Usabilidad y Estética

Se implementan soluciones para pequeños errores y mejoras visuales en las vistas:

  • 🔢 Corrección de Numeración en el Listado:
    • En views/usuarios/index.php, se deja de usar el ID de la base de datos para numerar las filas (ya que los IDs pueden tener saltos) y se implementa una variable $contador que se incrementa en cada iteración del foreach [11:09].
    • Se utiliza la etiqueta <center> en las celdas de la tabla para centrar el contenido [12:12].
  • ↩️ Botón "Cancelar" en el Formulario CREATE:
    • Se añade la redirección a index.php en el botón "Cancelar" para permitir al usuario volver al listado [12:43].
  • 💬 Gestión de Mensajes con SweetAlert y Sesiones:
    • Mensaje de Error (CREATE): Se utiliza una sesión de PHP ($_SESSION['mensaje']) para enviar el error de "contraseñas no son iguales" desde el controlador (create.php) a la vista (create.php) [14:31].
    • Destrucción de la Sesión: Se utiliza la función unset() para eliminar la variable de sesión después de mostrar el mensaje con SweetAlert. Esto evita que el mensaje de error o éxito aparezca cada vez que se actualiza la página [20:18].
    • Mensaje de Éxito (CREATE): Se usa el mismo mecanismo de sesión para enviar un mensaje de éxito ("se registró al usuario de la manera correcta") y redirigir al usuario al listado (index.php) tras la inserción [23:05].