Hola,
¡Pero cómo que no! ¡¡Si acabas de convencerme de lo contrario!!
Lo estoy ahora mismo probando Román, y, parece que funciona... Este es el código que de momento está ejecutándose al "entrar" al formulario:
Código PHP:
public function AssertAccessRetries(){
global $gbInput;
if(isset($_SESSION[GBUSER_SESSION_ACCESS_RETRIES])){
if($_SESSION[GBUSER_SESSION_ACCESS_RETRIES]
>= GBUSER_MAX_ACCESS_RETRIES_NUM){
return new GbError(array(
ra('Maximum user access retries detected.'),
ra('Please, close your session and try again.')
));
}
}else{
if($gbInput->IsHttpGetRequest()){
$_SESSION[GBUSER_SESSION_ACCESS_RETRIES] = 0;
}
}
}
Y, este otro, se ejecutaría sólo cuando se enviase el formulario:
Código PHP:
if(!isset($_SESSION[GBUSER_SESSION_ACCESS_RETRIES])){
return new GbError(ra('Invalid user session. Please, try again.'));
}else{
$_SESSION[GBUSER_SESSION_ACCESS_RETRIES]++;
}
El primero me parece más curioso que el segundo: fíjate que si no existe la variable de sesión, no la establece sin más: sólo lo hace si la petición es HTTP GET. Como pulgoso manda el formulario vía HTTP POST... se va a encontrar (y de hecho se encuentra) con el segundo código...
Ya digo, el asunto parece funcionar, aunque, no dudo de que pudiera "complicarse" lo que quisiese, guardando IPs, fechas, etc. Sin embargo, creo que podría valer tal cual, sin tantas complicaciones, pues, los problemas no los tendría el usuario normal y corriente, sino los caniches "roba contraseñas"... y de eso se trata, ¿no?
¡¡¡Ahora vas a decirme que no!!!
Lo que hay que hacer es pruebas y más pruebas... suponiendo varias posibilidades, cuantas más mejor, y ver si el invento aguanta o qué.