Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Venho aqui deixar um código que finalizei a pouco tempo.
Um sisteminha que faz a validação de login e senha, faz a contagem das tentativas e se esta tentativa ultrapassar 3, ele bloqueia o usuario. Tudo armazenado em um banco de dados para que fique mais seguro.
Formulário:
<%Response.Expires=0
Response.Buffer=True
%>
<% if Request.QueryString("em")="branco" then%>
Preencha todos os campos!<p>
<%else%>
<%end if%>
<% if Request.QueryString("user")="logoff" then%>
Deslogado com sucesso! Volte Sempre!<p>
<%else%>
<%end if%>
<%if request.QueryString("erro")="negado" then%>
Login/Senha invalidos!<p>
<%else%>
<%end if%>
<%if request.QueryString("user")="bloqueado" then%>
Usuário Bloqueado! Acesse seu e-mail para desbloqueio!<p>
<%else%>
<%end if%>
Entre com seu login e senha
<form method="post" action="login.asp">Login: <input type="text" name="login" size="14">
Senha: <input type="password" name="senha" size="14">
<input type="submit" value="Logar"></form>
Página que valida os dados:
<!--#include file="../conexao.asp"--> 'pagina que contem a string de conexao do seu banco de dados'
<%
login = Trim(Request.Form("login")) 'retira o espaco antes e depois do que foi inserido nos campos de login e senha'
senha = Trim(Request.Form("senha"))
sql="SELECT * FROM usuarios where login='" & login & "' and senha='" & senha & "'" ' aqui verifica se o usuario ou a senha existem no Banco de dados
Set rsLog = conn.execute(sql) 'cria um RecordSet para execução do comando
If rsLog.EOF then 'se o registro chegou ao final significa que não foi encontrado o registro, login invalido
If Len(Session("tentativas")) < "0" Then 'se é a primeira tentativa registra como 1
Session("tentativas") = "1"
Else
If Session("tentativas") < 3 Then se ainda não atingiu o máximo de tentativas, soma-se mais 1
tentativas = Session("tentativas") + 1
Session("tentativas") = tentativas
strSQL="UPDATE usuarios set tentativas='" & Session("tentativas") & "' WHERE login='" & login & "'" 'atualiza o campo no banco de dados, baseando-se no login digitado
set rsTent=conn.execute(strSQL)
Response.Redirect("default.asp?erro=negado") 'retorna para a página de login com o erro
End if
If Session("tentativas") = 3 or Session("tentativas") > 3 Then ' se as tentativas chegaram no máximo, ou seja, 3
strBloq="UPDATE usuarios SET bloqueado=1 WHERE login='" & login & "' AND tentativas=3" 'atualiza a tabela bloqueado para 1, ou seja, o login está bloqueado!
set rsBloq=conn.execute(strBloq) 'executa o comando atraves do recordset
Session("user")="bloqueado" 'define esta instrução com a seção -- bloqueado
Response.Redirect("default.asp?user=bloqueado") 'retorna com o devido erro
End If sql2="SELECT * FROM usuarios" 'seleciona todos os dados da tabela
set rsNOK=conn.execute(sql2)
If rsNOK("bloqueado")=1 Then 'verifica se o usuario esta bloqueado ou não
Response.Redirect("default.asp?user=bloqueado") 'se estiver, retorna com o erro
Else 'caso contrario
Session("status") = "ok" 'login efetuado
Response.Redirect("home.asp?us=" & rsLog("id_usuario") & "")
sqlOK="UPDATE usuarios set tentativas=0,bloqueado=0 WHERE login='" & login & "'" 'aqui representa que se o usuario logar, as tentativas zeram
set rsOK=conn.execute(sqlOK)
Session("nome")=rsLog("nome_usuario")
End ifEspero que seja útil para alguem
Carregando comentários...