Foros del Web » Programando para Internet » PHP »

Bloqueo de usuario por intentos fallidos por 20 min

Estas en el tema de Bloqueo de usuario por intentos fallidos por 20 min en el foro de PHP en Foros del Web. Hola foreros.... Estoy trabajando en un script en php en el cual si el usuario intento mas de 5 veces ingresar al sistema y introdujo ...
  #1 (permalink)  
Antiguo 26/05/2013, 08:19
 
Fecha de Ingreso: mayo-2012
Ubicación: shilito
Mensajes: 67
Antigüedad: 12 años
Puntos: 3
Bloqueo de usuario por intentos fallidos por 20 min

Hola foreros....

Estoy trabajando en un script en php en el cual si el usuario intento mas de 5 veces ingresar al sistema y introdujo mal la clave. EL sistema lo bloqueará durante 20 min.

Lo que me tiene aproblemado es que cuando quiero calcular el ultimo intento (el cual esta guardado en la BBDD) VS la fecha actual, no me resulta.

Lo que hago es rescatar la fecha del ultimo intento y compararla con la fecha actual en Segundos (funcion strtotime de PHP), pero por alguna razon, que desconozco, la fecha actual no me la transforma en Segundos, pero si la fecha de la BBDD...

Haber si me pueden hechar una mano, dejo el codigo.

Código PHP:
Ver original
  1. <?php
  2. date_default_timezone_set("Chile/Continental");
  3.  
  4. include ("conexion.php");
  5.  
  6. $username = filter_input(INPUT_POST, 'username',FILTER_SANITIZE_STRING);
  7. $password = filter_input(INPUT_POST, 'password',FILTER_SANITIZE_STRING);
  8.  
  9.  
  10.  
  11. $query01 = "SELECT [login],[empresa],([nombre_tec]+' '+[apellido_1_tec]+' '+ [apellido_2_tec]) as fullname,[id_perfil],[email],[estado] FROM tecnico WHERE Login= '".$username."' and Password='".$password."'";
  12.  
  13.  
  14. $revisar= mssql_query($query01,$conexion );
  15.  
  16. while($resul01=mssql_fetch_array($revisar))
  17.     {
  18.         $login=$resul01[0];
  19.         $empresa=$resul01["1"];
  20.         $fullname=$resul01[2];
  21.         $perfil=$resul01["3"];
  22.         $email=$resul01["4"];
  23.         $activo=$resul01["5"];
  24.         $intentos = $resul01["6"];
  25.     }
  26.  
  27.  
  28. $num_registros=mssql_num_rows($revisar);
  29.  
  30. if ($num_registros==1)
  31.     {
  32.         if ($activo==0)
  33.         {
  34.             ob_start();
  35.     header("refresh: 1; url = ../index.php");
  36.             echo "<script language=JavaScript>alert('Usuario se encuentra desabilitado. Si necesitas acceder favor de comunicarte con el administrador. ');</script>";
  37.             //include ("../index.php");
  38.             ob_end_flush();
  39.             exit();
  40.         }
  41.        
  42.         if ($activo==1)
  43.             {
  44.             $reviso_ultimo_intento = "SELECT [ultimo_intento], intentos FROM [SCI].[dbo].[Tecnico] WHERE Login= '".$username."'";
  45.             $ejecuto_ultimo_intento =mssql_query($reviso_ultimo_intento,$conexion);
  46.             while($info_ultimo_intento = mssql_fetch_array($ejecuto_ultimo_intento)){
  47.                 $ultima_fecha = $info_ultimo_intento['0'];
  48.                 $N_intentos = $info_ultimo_intento['1'];
  49.             }//cierro while
  50.             phpinfo();
  51.             //$fecha_actual = date("F j Y g:i a")."<br>";
  52.             $fecha_actual = date("d m Y H:i");
  53.                        
  54.             echo "ultima fecha ".$ultima_fecha."<br>";
  55.             echo "Fecha Acual ".$fecha_actual."<br>";
  56.            
  57.             echo "Cambiamos la fecha a segundos <br>";
  58.             echo "fecha actual ".$fecha_actual = strtotime($fecha_actual)."<br>";// No me transforma en segunos la fecha -_-
  59.             echo "Ultima Fecha ".$ultima_fecha = strtotime($ultima_fecha);
  60.            
  61.             exit;
  62.            
  63.  
  64.                 session_start();   
  65.                 $mi_sesion = $login;
  66.                 $_SESSION['usuario']="$mi_sesion";
  67.                 $_SESSION['perfil']="$perfil";
  68.                 $_SESSION['nombre']="$fullname";
  69.                 $_SESSION['mail']="$email" ;
  70.                 session_register("mi_sesion");
  71.                
  72.                 $query_last_conexion = "update [SCI].[dbo].[Tecnico] set
  73.                                         [last_login]= getdate(),
  74.                                         [login_ip] ='".$_SERVER['REMOTE_ADDR']."',
  75.                                         [ultimo_intento] = getdate(),
  76.                                         intentos =0 where login ='".$username."'";
  77.         $ejecuto_last_conexion = mssql_query($query_last_conexion,$conexion);
  78.        
  79.             mssql_close($conexion); //cerramos la conexión
  80.             //muestra el inventario redireccionamiento a la pagina menu.php
  81.             ob_start();
  82.             header("refresh: 0; url =../menu.php");
  83.             //echo 'Espere un momento y será redireccionado...';
  84.             ob_end_flush();
  85.             exit();
  86.             }
  87.        
  88.     }else{
  89.     //echo "El usuario o password no son validos";
  90.     $query_fail ="SELECT intentos,ultimo_intento FROM [SCI].[dbo].[Tecnico] WHERE Login= '".$username."'";
  91.     $exe_fail = mssql_query ($query_fail,$conexion);
  92.     while($show_intentos=mssql_fetch_array($exe_fail)){
  93.         $intentos = $show_intentos['0'];
  94.         $ultimo_intento = $show_intentos['0'];
  95.     }//cierre while
  96.    
  97.    
  98.     if($intentos<5){
  99.     $intentos = $intentos+1;
  100.     $query_last_conexion = "update [SCI].[dbo].[Tecnico] set [login_ip] ='".$_SERVER['REMOTE_ADDR']."',[ultimo_intento] = getdate(), intentos =".$intentos." where login ='".$username."'";
  101.     $ejecuto_last_conexion = mssql_query($query_last_conexion,$conexion);
  102.    
  103.     ob_start();
  104.     header("refresh: 1; url = ../index.php");
  105.     echo "<script language=JavaScript>alert('El usuario y/o la password son incorrectos, este es el ".$intentos." intento de 5');</script>";
  106.  
  107.     mssql_close($conexion);
  108.     ob_end_flush();
  109.     exit;
  110.         }else{ 
  111.     echo "<script language=JavaScript>alert('La cuenta ".$username." a sido Suspendida por 20 Min, ya que ah intentado mas de 5 veces'); window.location='../index.php';</script>";
  112.         }//cierre del 2° else
  113.     }//cierre del 1° else
  114.  
  115. mssql_close($conexion);
  116. exit();
  #2 (permalink)  
Antiguo 26/05/2013, 08:25
 
Fecha de Ingreso: mayo-2012
Ubicación: shilito
Mensajes: 67
Antigüedad: 12 años
Puntos: 3
Respuesta: Bloqueo de usuario por intentos fallidos por 20 min

Se me olvidaba este es el formato que manejo las fechaas.

ultima Login May 26 2013 9:37AM "el que rescato de la bbdd"
Fecha Acutal 26 05 2013 10:28 "Formato coloco en php "

Etiquetas: bloqueo, intentos, min, registro, select, sql, usuario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:46.