Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/05/2013, 08:19
ghost_darknet
 
Fecha de Ingreso: mayo-2012
Ubicación: shilito
Mensajes: 67
Antigüedad: 11 años, 11 meses
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();