Contador de Tentativas em Login

02/04/2014

0

PHP

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***

Frederico Brigatte***

Responder

Posts

02/04/2014

Bruno Leandro

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.
Responder

02/04/2014

Frederico Brigatte***

Tem como montar um exemplo simples ai? Por favor?
Responder

03/04/2014

Frederico Brigatte***

Um exemplo, por favor, estou precisando.
Responder

04/04/2014

Frederico Brigatte***

Alguém para ajudar?
Responder

06/04/2014

Bruno Leandro

Ola fiz um exemplo simples para voce, veja se ajuda

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");
       
                    } 
			    }
            }
        }
	}	
?>
Responder

06/04/2014

Frederico Brigatte***

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

06/04/2014

Bruno Leandro

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
Responder

06/04/2014

Bruno Leandro

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

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

06/04/2014

Frederico Brigatte***

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?
Responder

07/04/2014

Bruno Leandro

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

07/04/2014

Frederico Brigatte***

Segue esse: Gostaria de saber como fazer:

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

28/04/2014

Frederico Brigatte***

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?
Responder

04/05/2014

Luciano Martins

If (usuario_administrador){
      inserir();
}
Responder

05/05/2014

Frederico Brigatte***

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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar