Array
(
)

Contador de Tentativas em Login

PHP
Frederico Brigatte***
   - 02 abr 2014

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?

Bruno Leandro
   - 02 abr 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.

Frederico Brigatte***
   - 02 abr 2014

Tem como montar um exemplo simples ai? Por favor?

Frederico Brigatte***
   - 03 abr 2014

Um exemplo, por favor, estou precisando.

Frederico Brigatte***
   - 04 abr 2014

Alguém para ajudar?

Bruno Leandro
   - 06 abr 2014

Ola fiz um exemplo simples para voce, veja se ajuda

Tabela
#Código

create table usuario
(
  cd_usuario integer;
  qt_falha integer;
  dh_bloqueio time_stamp;
  ds_pass varchar(32)
);


Arquivo conexao.php
#Código
<?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
#Código
<p>Login ok</p>


Arquivo Login.php
#Código
<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
#Código
<?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");
       
                    } 
			    }
            }
        }
	}	
?>

Frederico Brigatte***
   - 06 abr 2014

Obrigado. Vou testar e posto. Só uma ressalva. Como faria para gravar o ip de quem tentou logar?

Bruno Leandro
   - 06 abr 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

Bruno Leandro
   - 06 abr 2014

pagar pegar o ip voce pode usar esse codigo, quando tiver local deve trazer 127.0.0.1

#Código

<?php
echo $_SERVER["REMOTE_ADDR"];
?>

Frederico Brigatte***
   - 06 abr 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?

Bruno Leandro
   - 07 abr 2014

meu antivirus(kaspersky) esta bloqueando este site, provavelmente em alguns script duvidoso

Frederico Brigatte***
   - 07 abr 2014

Segue esse: Gostaria de saber como fazer:

http://demos.jquerymobile.com/1.0a4.1/docs/pages/docs-transitions.html

Frederico Brigatte***
   - 28 abr 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?

Luxu
   - 04 mai 2014

#Código

If (usuario_administrador){
      inserir();
}

Frederico Brigatte***
   - 05 mai 2014

Ta e como checo se é administrador e como inserir? Gostaria que fosse em PDO esses métodos.