Hace todo bien, pero no se me ocurre como hacer para bloquear a un usuario luego de 5 intentos fallidos... ya he logrado contabilizar los intentos fallidos, pero quisiera que cuando el limite llegue a 5, no se vuelva a habilitar la opcion de logueo para ese usuario por 24hs a partir de la fecha del ultimo intento fallido.
En mi tabla existen un campo INTENTOS, otro campo ULTIMAVISITA (timestamp) y un campo ULTIMOINTENTO (timestamp)... por favor si alguien me ayuda para lograr bloquear por 24hs o X tiempo a un usuario segun lo guardado en la BD.
Puede modificar lo que quieran del codigo.. ah.. si bien trabajo con Postgres, solo se cambian las funciones de pg_query por mysql_query, asi que es igual:
Aqui mi codigo funcionando a medias con ese pequeño detalle:
Código PHP:
<?php
if($_POST){
$email = $_POST["username"];
$clave = $_POST["password"];
$fecha= date("d/m/y H:i a");
unset($_POST); //Se destruye el array $_POST
if(preg_match("/^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/", $email)){
$sql_login="SELECT * FROM usuarios WHERE email LIKE '".$email."'";
$resultado_login=pg_query($sql_login)or die("Error query ".pg_last_error());
if(pg_num_rows($resultado_login) == 1){
$fila_usuario=pg_fetch_array($resultado_login, null, PGSQL_ASSOC);
if($fila_usuario['intentos'] < 5){
if($fila_usuario['pass']== $clave){
//validamos si la cuenta ya esta verificada
if($fila_usuario["verificacion"]=="si")
{
session_start();
$_SESSION["k_username"] = $fila_usuario["nombres"].", ".$fila_usuario["apellidos"];
$_SESSION["k_idcliente"] = $fila_usuario["idcliente"];
pg_query($conn2, "UPDATE usuarios SET ultimavisita='".$fecha."', intentos='0' WHERE idcliente=".$fila_usuario['idcliente'])or die("Error query ".pg_last_error());
header("Location: ../clients/principal-clients.php");
}//caso contrario, tiramos un mensaje de que aun no ha sido verificada la cuenta
else
{
echo "<h1>Su cuenta aun no ha sido verificada.</h1>";
echo "<p>Si ya se ha registrado desde nuestro sitio Web:</p>";
echo "<ul>
<li>Por favor, revise su correo electrónico.</li>
<li>Siga las instrucciones que le hemos enviado.</li>
<li>Inicie Sesión.</li>
</ul>";
echo "<p>Caso contrario, puede <a href='registro.php'>registrarse</a> para acceder a los servicios</p>";
}
}else{
pg_query($conn2, "UPDATE usuarios SET ultimointento='".$fecha."', intentos=intentos+1 WHERE idcliente=".$fila_usuario['idcliente'])or die("Error query ".pg_last_error());
echo "<p style='font-size:14px; color:#FF0000;'>El password no es valido!!</p>";
$cn = pg_query("SELECT intentos FROM usuarios WHERE idcliente=".$fila_usuario['idcliente'])or die("Error query ".pg_last_error());
$rs= pg_fetch_array($cn);
echo "<p>Recuerde que sólo posee <strong>5 intentos</strong> para ingresar a su cuenta correctamente.</p>";
echo "<p>Este es su intento N°: <span style='font-size:15px;'>".$rs['intentos']."</span></p>";
}
}else{
echo "<p style='font-size:14px; color:#FF0000;'>Ha sobre pasado el limite de 5 intentos. <br />La cuenta sera bloqueada automaticamente por 24hs.</p>";
}
}else{
echo "<p>La direccion de email ingresada no esta registrada</p>";
}
}else{
echo "<p>Ingrese una direccion de email valida</p>";
}
}else{
header("Location: ../index.php");
}
?>