Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Alguém conhece algum script que limite as tentativas de login de um usuário durante um certo tempo ou como faz isso? Por exemplo, ele tentou logar 5 vezes seguidas no sistema, sendo assim só vai poder logar após 5 minutos.
Estou tentando fazer o que você disse, o problema é esse timestamp retorna um valor do tipo 1295742381 e no db o campo é 0000-00-00 00:00:00 como faço o tratamento para poder inserir?
Opa vlw pessoal até que enfim ta dando certo aqui, só mais uma pergunta o certo não seria usar time em vez de timestamp pra coluna no banco de dados? Assim ele só iria retornar a hora:minuto:segundo em vez do dia, mes e ano também ou tem necessidade nesse caso?
tem o problema de o usuário tentar uma vez dia 7 às 23:58 e dia 8 às 00:01. Armazenar só o horário vai dar erro de ocntagem aí
Ok, fiz desse jeito agora, o problema é que ele nunca entra na condição $timestamp1 < $timestamp2. O que há de errado?
if ($vezes > 5) {
$query = mysql_query("SELECT timestamp FROM tentativas WHERE ip = '$ip'");
$r = mysql_fetch_array($query);
$tempo_servidor = $r['timestamp'];
$timestamp1 = time();
$timestamp2 = strtotime($tempo_servidor . "+5 minute");
if($timestamp1 < $timestamp2) {
echo "Você já tentou efetuar o login mais de 3 vezes seguidas, por favor tente novamente após 5 minutos.<br/>";
} else {
$query = mysql_query("DELETE FROM tentativas where ip='$ip'");
session_destroy();
}Tome cuidado ao usar IP pra esse tipo de coisa, lan houses por exemplo usam o mesmo IP pra todos os PCs.
principalmente se o seu projeto for de jogos online.
Verdade... então o que eu posso usar no lugar de ip nesse caso? Porque session quando o usuário fechar o navegador ja era e cookie ele pode apagar.
Olá,
Você pode armazenar as tentativas em um banco de dados. Pode criar uma tabela "tentativas" com colunas "vezes", "timestamp" e "ip".
Assim, a cada tentativa de login, você verifica se o IP do usuário não ultrapassou 5 tentativas. Se ele não ultrapassou e o login foi sucedido, nada acontece. Se ele não ultrapassou, mas falhou o login, acrescente um ao número de tentativas na tabela e atualize a coluna timestamp, com o timestamp atual.
Se ele ultrapassou as 5 tentativas, você deve verificar a coluna timestamp, e ver se já se passou mais de 5 minutos. Se sim, faça o procedimento de login normal e elimine a row (linha) dele da tabela.
É mais ou menos por aí. Deu pra entender ou eu confundi você? Se não entendeu, fale que eu tento explicar melhor.
PS: para pegar o timestamp atual em PHP:
[]'s