Contador de Tentativas em Login
Meus amigos, como que posso fazer um contador de Login, ou seja, tentar 3 vezes o login e se falhar desabilitar o botão por um tempo?
Frederico Brigatte***
Curtidas 0
Respostas
Bruno Leandro
02/04/2014
Voce pode criar dois campos na tabela do usuario.
- a quantidade de tentativas invalidas e
- datahora do bloqueio,
ai toda vez que der o login e falhar voce incrementa a quantidade,
quando atingir um limite que voce definiu, ele atualiza a data de bloqueio, com a datahora atual
define quanto tempo ficara bloqueado por exemplo meia hora,
no momento que ele tentar logar se a datahora atual estiver entre a datahora bloqueio + 30 minutos ele da um aviso que a conta esta temporariamente bloqueada
se for para desabilitar o botao voce precisa fazer as consistencias no momento que ele sair do campo do usuario.
- a quantidade de tentativas invalidas e
- datahora do bloqueio,
ai toda vez que der o login e falhar voce incrementa a quantidade,
quando atingir um limite que voce definiu, ele atualiza a data de bloqueio, com a datahora atual
define quanto tempo ficara bloqueado por exemplo meia hora,
no momento que ele tentar logar se a datahora atual estiver entre a datahora bloqueio + 30 minutos ele da um aviso que a conta esta temporariamente bloqueada
se for para desabilitar o botao voce precisa fazer as consistencias no momento que ele sair do campo do usuario.
GOSTEI 0
Frederico Brigatte***
02/04/2014
Tem como montar um exemplo simples ai? Por favor?
GOSTEI 0
Frederico Brigatte***
02/04/2014
Um exemplo, por favor, estou precisando.
GOSTEI 0
Frederico Brigatte***
02/04/2014
Alguém para ajudar?
GOSTEI 0
Bruno Leandro
02/04/2014
Ola fiz um exemplo simples para voce, veja se ajuda
Tabela
Arquivo conexao.php
Arquivo administracao.php
Arquivo Login.php
Arquivo valida.php
Tabela
create table usuario ( cd_usuario integer; qt_falha integer; dh_bloqueio time_stamp; ds_pass varchar(32) );
Arquivo conexao.php
<?php $conect = mysql_connect("127.0.0.1", "root", ""); if (!$conect) die ("<h1>Falha na conexão com o Banco de Dados!</h1>"); $db = mysql_select_db("Nome_Banco"); ?>
Arquivo administracao.php
<p>Login ok</p>
Arquivo Login.php
<form method="post" action="valida.php"> <label>Usuário</label> <input type="text" name="login" maxlength="50" /> <label>Senha</label> <input type="password" name="senha" maxlength="50" /> <input type="submit" value="Entrar" /> </form>
Arquivo valida.php
<?php if ($_POST) { include "conexao.php"; $login = trim($_POST["login"]); $senha = trim($_POST["senha"]); // Digitou Usuario ? if (empty($login)) { echo "<script>alert('Preencha o Login');</script>"; } //Digitou a Senha? else if (empty($senha)) { echo "<script>alert('Preencha o campo senha');</script>"; } else { $sql = "select cd_usuario,ds_pass,qt_falha,dh_bloqueio,current_timestamp as dh_atual from usuario where cd_usuario = '$login'"; $resultado = mysql_query($sql); $linha = mysql_fetch_array($resultado); $login2 = $linha["cd_usuario"]; $senha2 = $linha["ds_pass"]; $falha2 = $linha["qt_falha"]; $bloqueio2 = $linha["dh_bloqueio"]; $dataatual2 = $linha["dh_atual"]; // usuario informado existe ? if (empty($login2)) { echo "<script>alert('Usuario nao existe');</script>"; // quando a tentativa for inferior a meia hora ele informa que o usuario esta bloqueado } else { if ((strtotime($dataatual2)-strtotime($bloqueio2)) <= 10) { echo "<script>alert('Usuário Bloqueado');</script>"; } else { if ($bloqueio2<>'') { mysql_query("UPDATE usuario SET qt_falha= 0,dh_bloqueio=NULL where cd_usuario= '$login'"); $falha2 = 0; } // senha confere ? ou ja passou da meia hora if ($senha != $senha2) { if ($falha2<2) { mysql_query("UPDATE usuario SET qt_falha= qt_falha+1 where cd_usuario= '$login'"); echo "<script>alert('Senha inválida');</script>"; } else { mysql_query("UPDATE usuario SET qt_falha= qt_falha+1,dh_bloqueio=current_timestamp where cd_usuario= '$login'"); echo "<script>alert('Usuario bloqueado por excesso de tentativa invalida');</script>"; } } else { mysql_query("UPDATE usuario SET qt_falha= 0,dh_bloqueio=NULL where cd_usuario= '$login'"); header("Location: administracao.php"); } } } } } ?>
GOSTEI 0
Frederico Brigatte***
02/04/2014
Obrigado. Vou testar e posto. Só uma ressalva. Como faria para gravar o ip de quem tentou logar?
GOSTEI 0
Bruno Leandro
02/04/2014
na linha 38 do arquivo valida.php troque.
DE: if ((strtotime($dataatual2)-strtotime($bloqueio2)) <= 10) {
Para: if ((strtotime($dataatual2)-strtotime($bloqueio2)) <= 1800) {
1800 é 30 minutos, que é 60 segundos vezes 30
DE: if ((strtotime($dataatual2)-strtotime($bloqueio2)) <= 10) {
Para: if ((strtotime($dataatual2)-strtotime($bloqueio2)) <= 1800) {
1800 é 30 minutos, que é 60 segundos vezes 30
GOSTEI 0
Bruno Leandro
02/04/2014
pagar pegar o ip voce pode usar esse codigo, quando tiver local deve trazer 127.0.0.1
<?php echo $_SERVER["REMOTE_ADDR"]; ?>
GOSTEI 0
Frederico Brigatte***
02/04/2014
Ok. Gostaria de saber como que faz o efeito ao clicar no botão Soluções nesse site:
Site exemplo
Ok, ai eu posso armazenar numa variável e gravar na tb, certo?
Site exemplo
Ok, ai eu posso armazenar numa variável e gravar na tb, certo?
GOSTEI 0
Bruno Leandro
02/04/2014
meu antivirus(kaspersky) esta bloqueando este site, provavelmente em alguns script duvidoso
GOSTEI 0
Frederico Brigatte***
02/04/2014
Segue esse: Gostaria de saber como fazer:
http://demos.jquerymobile.com/1.0a4.1/docs/pages/docs-transitions.html
http://demos.jquerymobile.com/1.0a4.1/docs/pages/docs-transitions.html
GOSTEI 0
Frederico Brigatte***
02/04/2014
Ok, funcionou belezinha. Agora uma outra dúvida. Como faço para que um usuário sem ser admin não ter acesso para inclusão, somente alterar sua senha?
GOSTEI 0
Luciano Martins
02/04/2014
If (usuario_administrador){ inserir(); }
GOSTEI 0
Frederico Brigatte***
02/04/2014
Ta e como checo se é administrador e como inserir? Gostaria que fosse em PDO esses métodos.
GOSTEI 0