Por un sólo
script, me imagino que te refieres a que el mismo presenta el formulario y el mismo procesa los datos. Pero aún así son dos
scripts distintos: el mismo a dos tiempos.
Sería algo así:
user-login.php
Código PHP:
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Aquí el "segundo" script
if (!isset($_SESSION['intentos']))
{
die('Petición no válida');
}
/*
Verificamos los datos de inicio
*/
...
/*
Si son incorrectos, marcamos un intento más
*/
$_SESSION['intentos']++;
/*
Y lo mandamos a volar si ya rebasó el máximo permitido
*/
if ($_SESSION['intentos'] > 3)
{
die('Demasiados intentos');
}
exit;
}
$_SESSION['intentos'] = 0;
?>
<form method='post' action='login.php'>
<div>
<label for='user'>User</label>
<input type='text' name='user' id='user'>
</div>
<div>
<label for='password'>Pwd</label>
<input type='text' name='password' id='password'>
</div>
<div>
<input type='submit'>
</div>
</form>
Cita:
Empezado por dec
2º Reviso si existe la variable contador (para incrementarla, si es preciso) ¡Error!
|
¡Exacto! Ése es el punto. Si no existe la variable contador, es un error. No es que haya que volverla a inicializar,
es un error y le mandamos el
Código PHP:
die('Petición no válida');
La única forma en que no se dé ese error es teniendo definida esa variable de sesión y eso lo hacemos
al presentar el formulario. Si el listillo nos cambia la sesión pues el afectado es él porqué recibira el error.
// Saludos