-
-
Save parzibyte/d0edfed9b553f05789818946229ac4f0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
Regresa valores numéricos | |
0 en caso de que el usuario no exista o la contraseña sea incorrecta | |
1 en caso de que todo esté bien | |
2 en caso de que haya alcanzado el límite de intentos | |
*/ | |
function hacerLogin($correo, $palabraSecreta) | |
{ | |
$bd = obtenerBaseDeDatos(); | |
$sentencia = $bd->prepare("SELECT id, correo, palabra_secreta FROM usuarios WHERE correo = ?"); | |
$sentencia->execute([$correo]); | |
$registro = $sentencia->fetchObject(); | |
if ($registro == null) { | |
# No hay registros que coincidan, y no hay a quién culpar (porque el usuario no existe) | |
return 0; | |
} else { | |
# Sí hay registros, pero no sabemos si ya ha alcanzado el límite de intentos o si la contraseña es correcta | |
$conteoIntentosFallidos = obtenerConteoIntentosFallidos($registro->id); | |
if ($conteoIntentosFallidos >= MAXIMOS_INTENTOS) { | |
# Ha superado el límite | |
return 2; | |
} else { | |
# Extraer la correcta de la base de datos | |
$palabraSecretaCorrecta = $registro->palabra_secreta; | |
# Comparar con la proporcionada: | |
# Nota: esto es por simplicidad, en la vida real debes hashear las contraseñas | |
# https://parzibyte.me/blog/2017/11/13/cifrando-comprobando-contrasenas-en-php/ | |
if ($palabraSecretaCorrecta === $palabraSecreta) { | |
# Todo correcto. Borramos todos los intentos, pues ya hizo uno exitoso | |
eliminarIntentos($registro->id); | |
return 1; | |
} else { | |
# Agregamos un intento fallido | |
agregarIntentoFallido($registro->id); | |
return 0; | |
} | |
} | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment