Yo uso este codigo para hacer lo que deseas:
<FONT style="BACKGROUND-COLOR: #f5f5ff">
Código PHP:
<?php
//INICIO DE SESION
session_name('controlarintentos');
session_start();
//FUNCION PARA MOSTRAR EL FORMULARIO
function mostrar_form() {
// ESTE ES EL FORMULARIO
echo '<form name="login" action="" method="POST">';
echo 'Usuario: <input type="text" name="usuario"><br />';
echo 'Password: <input type="password" name="pswd"><br />';
echo '<br />';
echo '<input type="submit" value=" Enviar ">';
echo '</form>';
}
//NUMERO DE INTENTOS PERMITIDOS
$permitidos = 3;
//TIEMPO POR EL QUE NO PODRA LOGUEARSE SI HA SOBREPASADO EL NUMERO PERMITIDO DE INTENTOS (en segundos)
$tiempo = 20; //20 segundos
// PRIMERO VERIFICAMOS SI PUEDE SEGUIR LOGUEANDOSE O DEBE ESPERAR ALGUN TIEMPO
if(isset($_SESSION['tiempo_fuera'])) {
// Comprobamos cuanto tiempo ha pasado:
$tiempo_ahora = time() - $_SESSION['tiempo_fuera'];
if($tiempo_ahora < $tiempo) {
$tiempo_restante = $tiempo-$tiempo_ahora;
// ESTO SI NO PUEDE LOGUEARSE
die('Debes esperar '.$tiempo_restante.' segundos para poder intentar el login de nuevo.<br /><br /><a href="intentos.php">Recargar página</a>');
} else {
unset($_SESSION['tiempo_fuera']);
}
}
if($_SERVER['REQUEST_METHOD'] == "POST") {
// ESTO ES TODO LO QUE SE HARA AL ENVIAR EL FORMULARIO
// LUEGO VEMOS CUANTOS INTENTOS VA
if(!isset($_SESSION['intentos'])) {
$intento = 0;
$_SESSION['intentos'] = $intentos;
} else {
$intento = $_SESSION['intentos'];
}
// LUEGO COMPARAMOS CON EL NUMERO DE INTENTOS PERMITIDOS
if($intento >= $permitidos) {
// LO QUE PASARA SI HA SOBREPASADO EL NUMERO DE INTENTOS VALIDOS
unset($_SESSION['intentos']);
$_SESSION['tiempo_fuera'] = time();
die('Ha sobrepasado el numero permitido de intentos de login. No podra loguearse por '.$tiempo.' segundos.<br /><br /><a href="intentos.php">Recargar página</a>');
} else {
// CONTABILIZAMOS EL INTENTO
$intento++;
/*
AQUI VERIFICAS SI LOS DATOS SON CORRECTOS Y TODO ESO....
SI NO LO SON CREAS UNA VARIABLE $acceso = 0;
SI LO SON, CREAS LA VARIABLE $acceso = 1;
*/
// ALGO ASI PARA ESTE CASO... ESTO TU DEBES CAMBIAR POR TUS CONSULTAS A LA BD Y TODO ESO
if($_POST['usuario'] == 'admin' && $_POST['pswd'] == 'abc') {
$acceso = 1;
} else {
$acceso = 0;
}
// FIN VERIFICACION DE DATOS
if($acceso == 1) {
// BORRAMOS LAS VARIABLES DE SESION
unset($_SESSION['tiempo_fuera'],$_SESSION['intentos']);
// AQUI REDIRIGES O LO QUE SEA Q HAYA Q HACER SI EL LOGIN ES CORECTO
die('Login correcto');
} else {
// GUARDAMOS EL INTENTO Y REGRESAMOS AL LOGIN
$_SESSION['intentos'] = $intento;
echo 'datos incorrectos, vas '.$intento.' intentos <br />';
mostrar_form();
}
}
} else {
//MOSTRAMOS EL FORMULARIO
mostrar_form();
}
?>
Puedes verlo trabajando
in vivo en esta direccion:
http://www.okram.com.ar/intentos.php
Y otra cosa, solo decirles, y no para incomodarlos o molestar, que el pedir ayuda atraves de un MP o por correo electronico es considerado como una falta de respeto o discriminacion hacia los demas usuarios...
Espero te sirva e codigo, ya comentas como t fue
Salu2
EDITADO: Me olvidaba, los datos supuestos de acceso correcto en el ejemplo que te di son USUARIO: admin y PASS: abc .... Despoues de tres intentos fallidos el usuario no podra loguearse por 20 segundos... si quieres aumentar el tiempo a un dia por ejemplo: 60*60*24