Ver Mensaje Individual
  #18  
Antiguo 12-03-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita