Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marrabel

[Resolvido] Calculo de tentativas

Recommended Posts

Boa tarde, eu li no laboratorio de scripts que tem um recurso de login e senha com contagem de tentativas. Não consegui baixar lá.

 

Li em outros tópicos que mais seguro seria armazenar as tentativas e o IP em banco de dados. Não achei nada relativo na internet,

 

Se, por gentileza alguem puder dar alguma ideia de como implantar (sem mostrar codigo) eu agradeceria, pois quero tentar fazer sozinho, mas nao sei por onde começar.

 

 

Agradeço desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O login terá uma pagina com formulário e uma pagina para recuperar e comparar os dados do formulário com o banco de dados.

Recupera o ip usando Server.Variables e armazena numa variavel.

Cria uma sessão para tentativas com valor zero.

Caso login/senha estejam incorretos, a sessão de tentativa é acrescida em +1 e executa um insert no bd, com no numero da tentativa, e ip.

e redireciona para a pagina de login novamente.

 

Colocaria nessa tabela também um campo com data/hora.

Li uma vez que não é recomendado apontar se o erro foi no login ou na senha, é melhor uma mensagem generica do tipo login/senha invalidos ou mensagem nenhuma, vai de acordo com o programador ou requisitos do projeto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O login terá uma pagina com formulário e uma pagina para recuperar e comparar os dados do formulário com o banco de dados.

Recupera o ip usando Server.Variables e armazena numa variavel.

Cria uma sessão para tentativas com valor zero.

Caso login/senha estejam incorretos, a sessão de tentativa é acrescida em +1 e executa um insert no bd, com no numero da tentativa, e ip.

e redireciona para a pagina de login novamente.

 

Colocaria nessa tabela também um campo com data/hora.

Li uma vez que não é recomendado apontar se o erro foi no login ou na senha, é melhor uma mensagem generica do tipo login/senha invalidos ou mensagem nenhuma, vai de acordo com o programador ou requisitos do projeto.

Também li algo desse genero, pois se for descriminado o erro como login ou senha, um invasor ja descobre um dos dados.

 

No caso meu bd de tentativas, tem default value como zero. Eu faço um update ao inves de um insert?

 

E se no caso chegar a um determinado numero de tentativas, este login é bloqueado

 

Como faço pra pegar a hora exata das tentativas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi direito agora, você quer apenas limitar o numero de tentativas ou quer registra-las ?

 

Porque dependendo do objetivo, você pode criar a sessão e ir comparando o valor da sessão como o numero limite de tentativas, quando for igual, executa uma determinada ação (redireciona para outra pagina, cria um cookie, etc...)

 

Se deseja que fique armazenado num banco de dados, acho que é mais interessante que seja sempre inserido novos registros, pois assim é possivel verificar quantas vezes, quais dias/horas e ip´s foram usados nas tentativas frustadas para logar determinado usuário.

Para fins de auditoria, onde o sistema contenha informações sensiveis isso pode ser interessante.

 

Se tens medo de que o banco de dados fique gigantesco, num login válido, a pagina que exibirá as informações restritas pode realizar uma comparação de registros nesse banco de dados e apagar todos os registros feitos com data superior a 30 dias, por exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi direito agora, você quer apenas limitar o numero de tentativas ou quer registra-las ?

 

Porque dependendo do objetivo, você pode criar a sessão e ir comparando o valor da sessão como o numero limite de tentativas, quando for igual, executa uma determinada ação (redireciona para outra pagina, cria um cookie, etc...)

 

Se deseja que fique armazenado num banco de dados, acho que é mais interessante que seja sempre inserido novos registros, pois assim é possivel verificar quantas vezes, quais dias/horas e ip´s foram usados nas tentativas frustadas para logar determinado usuário.

Para fins de auditoria, onde o sistema contenha informações sensiveis isso pode ser interessante.

 

Se tens medo de que o banco de dados fique gigantesco, num login válido, a pagina que exibirá as informações restritas pode realizar uma comparação de registros nesse banco de dados e apagar todos os registros feitos com data superior a 30 dias, por exemplo.

 

Na verdade são os dois. Minha ideia é que ao mesmo tempo em que o usuario é bloqueado, ele recebe um e-mail com link para desbloqueio.

 

Então, de onde ele acessar ele terá que desbloquear. Feito isso a tabela que conta as tentativas de login deste usuario volta pro valor default (zero).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando o usuário for bloqueado, precisará ter um campo no db indicando o status dele (se está ativo ou bloqueado)

Se está bloqueado terá que exibir um aviso para verificar o e-mail ou reenviar o e-mail para o desbloqueio.

 

No processo de desbloqueio, altera-se o status do usuário e faz-se um delete na tabela com as tentativas de acesso.

 

Acho melhor ir fazendo por etapas e ir vendo as duvidas que forem surgindo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando o usuário for bloqueado, precisará ter um campo no db indicando o status dele (se está ativo ou bloqueado)

Se está bloqueado terá que exibir um aviso para verificar o e-mail ou reenviar o e-mail para o desbloqueio.

 

No processo de desbloqueio, altera-se o status do usuário e faz-se um delete na tabela com as tentativas de acesso.

 

Acho melhor ir fazendo por etapas e ir vendo as duvidas que forem surgindo.

Sim, vo tentar fazer aqui, quaisquer dúvidas eu posto o codigo.

 

Obrigado pelas dicas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode implementar o evento OnClick, olha este link

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, tentando seguir a sua percepção eu montei o meu código, mas como sou leigo em ASP tem alguns erros.

 

Segue o código:

 

Formulário

 

<%
Response.Expires = -1000 
Response.Buffer = True 
%>
<%If Request.QueryString("user")="logoff" then%>
Deslogado com sucesso!<p>
<%else%>
<%End if%>
<%if Request.QueryString("erro")="negado" then%>
Senha ou Usuário inválido<p>
<%else%>   
Entre com seu login e senha<p>
<%end if%>  

<html>
<head>
</head> 
<body>
<form name="frmLogin" action="login.asp" method="post">
  Login: <input type="text" name="txtlogin"><p>
  Senha: <input type="password" name="txtsenha"><p>
<input type="submit" name="btnEnviar" value="Enviar"><br><br>
</form>
</body>
</html>

 

Página que valida e recupera as informações:

 

<!--#includes file="conexao.asp" -->
<%   
ip=Request.ServerVariables("REMOTE_ADDR")
login=Trim(Request.Form("txtlogin"))
senha=Trim(Request.Form("txtsenha"))
tent=int(Request.QueryString("tentativas"))

sql="SELECT * from usuarios WHERE login='" & login & "' and senha='" & senha & "'"
set rsLog=conexao.execute(sql)
If rsLog.EOF then
	Session("erro") = "negado"
	tent=tent +1
	strSQL="UPDATE usuarios SET tentativa='" & tent & "' and ip='" & ip & "' WHERE login='" & login & "'"
	set rsATT=conexao.execute(strSQL)
Response.Redirect("default.asp?erro=negado")
Else
Session("status") = "ok"
Response.Redirect("home.asp")
End if
set rsLog=Nothing
rsLog.Close
%>

 

Eu não consegui fazer atualizar os campos (tentativa e ip) para o devido usuario

e tambem não consegui somar as tentativas.

 

Se puder me dar uma luz fico muito grato. Enquanto isso eu vou tentando algo aqui.

 

No aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Note que você não passa o numero da tentativa via querystring para que ela funcione.

Pessoalmente, eu criaria uma Session, pois a querystring é fácil de burlar, assim como a querystring do erro, também criava uma session.

 

If Session("tent") = "" then
Session("tent")= 0
end if
...
...

Session("tent") =Session("tent")+1

Response.Redirect("default.asp") '<== Como você criou a Session("erro") recupera ela no default.asp se estiver vazia, não exibe mensagem, se estiver preenchida, exibe alguma mensagem (ou não)

 

No ip, dá um response.write para ver se está devidamente preenchido, bem como na clausula sql, dá um response.write nela para ver se está correta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Note que você não passa o numero da tentativa via querystring para que ela funcione.

Pessoalmente, eu criaria uma Session, pois a querystring é fácil de burlar, assim como a querystring do erro, também criava uma session.

 

If Session("tent") = "" then
Session("tent")= 0
end if
...
...

Session("tent") =Session("tent")+1

Response.Redirect("default.asp") '<== Como você criou a Session("erro") recupera ela no default.asp se estiver vazia, não exibe mensagem, se estiver preenchida, exibe alguma mensagem (ou não)

 

No ip, dá um response.write para ver se está devidamente preenchido, bem como na clausula sql, dá um response.write nela para ver se está correta.

 

Ok vinicius, vou arrumar aqui e posto o resultado novamente.

Grato por enquanto...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode implementar o evento OnClick, olha este link

 

Eu ja tinha visto esse topico, mas o exemplo eu nao consegui ver.

 

Me desculpem pela ignorancia, mas não consegui fazer o q o vinicius explicou...

 

Ficou bagunçado mas...

 

O comando UPDATE está com a sintaxe correta.

Queria entender...aonde eu especifico a session de tentativas?

Qualquer ajuda eu agradeço!

 

Segue o código:

<!--#includes file="conexao.asp" -->
<%
ip=Request.ServerVariables("REMOTE_ADDR")   
login=Trim(Request.Form("txtlogin"))
senha=Trim(Request.Form("txtsenha"))

sql="SELECT * from contatos WHERE login='" & login & "' and senha='" & senha & "'"
set rsLog=conexao.execute(sql)
If not rsLog.EOF then
	Session("status") = "ok"
	Session("nome")=rsLog("nome")
	Response.Redirect("home.asp")
Else
If Session("tent")="" then
Session("tent")=0
	strSQL="UPDATE contatos SET tentativa='" & Session("tent") & "' WHERE login='" & login & "'"
	set rsTent=conexao.execute(strSQL)
Session("tent")=Session("tent")+1
Session("erro") = "negado"
Response.Redirect("default.asp?erro=negado")
End if
End if
%>

 

OBS: Acredito que este "if" que eu coloquei embaixo do "Else" não exista. Por favor me deem uma luz!

 

Grato!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele esta gerando algum número de erro ?

 

olha este exemplo que uso

 

login.asp

 

 

<% @ Language = VBScript%>
<%
Dim msg
msg = Request.QueryString ("msg")

Se msg <> "" Then
Response.write (msg)
End If
%>

<BR>
<FORM METHOD='post' ACTION='loginDone.asp'>
<input type='text' name='userID' size='20' maxlength='16'> User ID <BR>
<input type='text' name='userPW' size='20' maxlength='16'> Senha <BR>
<input type='submit' value='Submit'> <BR>
</ FORM>

 

 

 

 

loginDone.asp


<% @ Language=VBScript %>
<%
 Option Explicit
 Response.Expires = 0
%>
<!-- #include file="ADOVBS.INC" -->
<%
 If session("memberCount") => 3 Then
       Response.write("Você tem incorretamente tentou acessar a área de membros 3 ou mais vezes. <BR>")
       Response.write("A conta" & Session ("memberName") & "foi bloqueado. <BR>)
       Response.write("Contate o administrador para desbloquear a conta.<BR>")
       'Insira aqui o seu banco de dados conexão para definir o "userLockout" campo Sim / Não que corresponde a sessão ("memberName") para True para que estes sejam bloqueados até que o administrador as desbloqueie
       Response.End
 Elseif session("userCount") => 5 Then
       Response.write("Você tentou incorretamente acessar a área de membros 5 ou mais vezes.<BR>")        
       Response.End
 End If

 Dim userID, userPW
 userID = Trim(Request.Form("userID"))
 userPW = Trim(Request.Form("userPW"))
 If userID="" or userPW="" Then
       Response.redirect("login.asp?msg=You+Must+Enter+A+User+ID+AND+Password!")
 End If

 Dim conn, connString, rs, sql
 'Fazer um conjunto de registros desconectado para pesquisas mais rápidas e utilizando menos recursos no servidor.
 sql = "SELECT * FROM users WHERE ((users.id)='" & userID & "');"
 Set conn = Server.CreateObject("ADODB.Connection")
 connString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("myDatabase.mdb") & ";"
 conn.Open connString
 Set rs = Server.CreateObject("ADODB.Recordset")
 rs.CursorLocation = adUseClient
 rs.Open sql, conn, 3, 1, adCmdText
 rs.ActiveConnection = Nothing
 conn.Close
 Set conn = Nothing

 If rs.EOF Then
     If session("userCount") <> "" Then
         session("userCount") = session("userCount") + 1
     Else
         session("userCount") = 1
     End If
     Response.redirect("login.asp?msg=No+Such+User")
 Else
     If rs("lockout") = True Then
         Response.write("A conta " & session("memberName") & " foi bloqueada.<BR>")
         Response.write("Contate o administrador para desbloquear a conta.<BR>")
         Response.End
     Else
         If session("memberName") <> userID Then
             session("memberName") = userID
             session("memberCount") = 1
         Else
             session("memberCount") = session("memberCount") + 1
         End If

         If rs("pw") <> userPW Then
             Response.redirect("login.asp?msg=Incorrect+Password")
         Else
             Session.Contents.Remove("userCount")
             Session.Contents.Remove("memberCount")
             Session.Contents.Remove("memberName")

             session("userID") = rs("id")
             session("age") = rs("age")
             session("email") = rs("email")
             session("signinFlag") = True 'para verificar o acesso a área de membros

             Response.redirect("memberArea.asp")
         End If
     End If
 End If

 rs.Close
 Set rs = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

não da pra especificar se o erro é do login ou senha

talvez a pessoa tenta digita usuario Rodrigo123 e digita Rodrigo 111

e senha dela é 222222

 

acontece que ela digitando login Rodrigo111 pode existir esse login no bd e o array vai encontrar esse registro e então n vai exibir msg que o login está errado

e a senha tmb vai ser encontrada tmb não exibindo msg, porem n vai logar.

 

isso se for usado um array para checar se o login/senha existe no BD

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade, o recomendado (segundo o vinicius) é não exibir mensagens do tipo "Login invalido" ou "Senha invalida", pois isto facilita a descoberta de dados. O ideal é informar somente "Login/Senha invalido" para que não se descubra nenhum dos 2 dados (em um BD).

 

Essa validação de já existir um usuario com o mesmo nome não vai ser atribuida em um login e sim em um cadastro (via ajax por exemplo). Ou no momento de enviar os dados de um formulário, ele comparar para verificar se existe ou não.

 

Xanburzum, a página simplesmente fica em branco. Acho que atribui um if errado ali...nao sei ao certo.

 

Vou tentar pegar a sua lógica no código e tentar implantar segundo o metodo que especifiquei no meu. Posto o resultado posteriormente.

 

Se mais alguem tiver sugestões eu agradeço

 

Fico no aguardo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo, utilizo um SELECT CASE para saber qual o erro gerado.

 

<%
Select case varmsgeof
case 1 'login vazio
response.write("<script>novajan();</script>")
case 2 'senha vazia
response.write("<script>novajan();</script>")
case 3 'login inválido
response.write("<script>novajan();</script>")
case 4 'senha incorreta
response.write("<script>novajan();</script>")
case 5'se user jah logado
response.write("<script>novajan();</script>")
case 6   ' user naun está logado,por isso naun tem permissaun para entrar em atualizacaun/suporte
response.write("<script>novajan2();</script>")
end select %>

 

<% Option Explicit 
'declara as var
dim varmsgeof, bc, data
'recupera a msgeof do erro no login_action
varmsgeof=request.querystring("msgeof")%>

<script language="javascript">
function novajan(){
window.open ("erro_treina.asp","Erro","width=240,height=240,scrollbar=no,status=yes,resize=no")
}
</script>
<script language="JavaScript">
function novajan1(){
window.open("terminar_treina.asp","Encerrar", "width=260,height=240,status=yes,scroolbars=no,toolbar=no")}
</script>
<script language="JavaScript">
function novajan2(){
window.open("efetuarlog_treina.asp","Encerrar", "width=150,height=240,status=yes,scroolbars=no,toolbar=no")}
</script>
<%
Select case varmsgeof
case 1 'login vazio
response.write("<script>novajan();</script>")
case 2 'senha vazia
response.write("<script>novajan();</script>")
case 3 'login inválido
response.write("<script>novajan();</script>")
case 4 'senha incorreta
response.write("<script>novajan();</script>")
case 5'se user jah logado
response.write("<script>novajan();</script>")
case 6   ' user naun está logado,por isso naun tem permissaun para entrar em atualizacaun/suporte
response.write("<script>novajan2();</script>")
end select %>

<HTML>
<HEAD>
<TITLE>Login Clientes</TITLE>
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
<BODY bgColor=#ffffff leftMargin=18 topMargin=12>
<table width="100%" border="0" height="445">
 <tr> 
   <td height="378"> <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#666666"><b><font color="#336699">:: 
       Senhores Clientes para sua maior <br>
       segurança solicitamos sua identificação <br>
       para poder ter acesso a área restrita a você.</font></b></font><font face="Arial, Helvetica, sans-serif" size="1" color="#666666"><b> 
       </b></font></p>
     <p> </p>
     <form name="form1" method="post" action="logincli_action_treina.asp">
       <table width="85%" border="0" cellspacing="0" cellpadding="0" bgcolor="#336699">
         <tr bgcolor="#666666"> 
           <td width="4%" bgcolor="#666699"><img src="imgs/curva.gif" width="10" height="19"></td>
           <td width="96%" bgcolor="#336699"> <div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#FFFFFF"><b><font size="3">:: 
               </font>Porfavor efetue seu login</b></font></div></td>
         </tr>
         <tr bgcolor="#666666"> 
           <td width="4%" bgcolor="#336699"> </td>
           <td width="96%" bgcolor="#336699"> </td>
         </tr>
       </table>
       <table width="85%" border="0" cellspacing="0">
         <tr bgcolor="#336699"> 
           <td colspan="3"><font color="#e6e6e6" face="Verdana, Arial, Helvetica, sans-serif" size="2"><b> Login: 
               
             <input name=login size="12" maxlength="12">
             </b></font></td>
         </tr>
         <tr bgcolor="#336699"> 
           <td colspan="3"><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#e6e6e6"><b> Senha: 
             <input type=password name=senha size="12" maxlength="12">
                <span class="preto"> 
             <input type="image" border="0" name="imageField" src="imgs/enviar.gif" width="87" height="22">
             </span></b></font></td>
         </tr>
         <tr bgcolor="#336699"> 
           <td height="2" width="41%"> <div align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#e6e6e6"><strong>Esqueceu 
               a senha clike <a href="esqsenha_form_treina.asp">Aqui</a></strong></font></div></td>
           <td width="42%"><div align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#e6e6e6"><b>Para 
               efetuar Logo-off clique</b></font></div></td>
           <td height="2" width="17%"><script type="text/javascript">
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0','width','35','height','19','src','logoff','quality','high','pluginspage','http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash','scale','exactfit','bgcolor','#336699','movie','logoff' ); //end AC code
           </script>
             <noscript>
             <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0" width="35" height="19">
               <param name=movie value="logoff.swf">
               <param name=quality value=high>
               <param name="BGCOLOR" value="#336699">
               <param name="SCALE" value="exactfit">
               <embed src="logoff.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" scale="exactfit" width="35" height="19" bgcolor="#336699"> </embed>
             </object>
             </noscript>            </td>
         </tr>
       </table>

     </form>
     </td>
 </tr>
</table>
</BODY></HTML>

 

<% Option Explicit
'declara as var
dim varsenha, varlogin, conexao ,rs, SQL, conDBQ, constring, rsselect, sqlselect, rsinsert, sqlinsert, rsupdate, sqlupdate,data
'recupera as var
varlogin=Trim(request.form("login"))
varsenha=Trim(request.form("senha"))
varlogin=Replace(varlogin,"'","")
varsenha=Replace(varsenha,"'","")
if varlogin="" then
response.redirect("logincli_form_treina.asp?msgeof=1")
end if
if varsenha="" then
response.redirect("logincli_form_treina.asp?msgeof=2")
end if
if Session("logado")=True then
response.redirect("logincli_form_treina.asp?msgeof=5")
end if 
%>
<!--#include file="conn/conexao1.asp"-->
<%
call abreconexao
'cria o recordset
Set rs=Server.CreateObject("ADODB.Recordset")
SQL="SELECT * FROM login WHERE login='"&varlogin&"'"
rs.open SQL,conexao,1,3
if rs.eof then
   response.redirect("logincli_form_treina.asp?msgeof=3")
else
	if Lcase (varsenha) <> Lcase(rs("senha")) then
		response.redirect("logincli_form_treina.asp?msgeof=4")
		session("logado")=False
	else
		session("logado")=True
		session("senha")=varsenha
		session("login")=varlogin
		response.Redirect("administracao_treina.asp")
	end if
end if
set rs=nothing
call fechaconexao%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, tendei seguir a ideia do xanburzum...consegui entender algumas coisas mas na hora em que é jogado o login e senha (seja correto ou não), ele fica em branco e trava na página de validação.

 

Segue o código:

 

<!--#includes file="conexao.asp" -->
<%
Dim login, senha

login=Trim(Request.Form("txtlogin"))
senha=Trim(Request.Form("txtsenha"))


If Session("functent") >= 3 Then
	sql="UPDATE usuarios SET tentativas='" & Session("functent") & "' and bloqueado=1' WHERE login='" & login & "' AND tipo=1"
	set rsBFun=conn.execute(sql)
	Response.Write("Foi detectado um excesso de tentativas de login. Por motivos de segurança a conta" & Session("nomeFunc") & "está  bloqueada<br> Consulte o administrador para desbloqueá-la<br>")
	Response.End()
Elseif Session("usrtent") >=3 Then
	sql="UPDATE usuarios SET tentativas='" & Session("usrtent") & "' and bloqueado=1' WHERE login='" & login & "' AND tipo=2"
	set rsBPac=conn.execute(sql)
	Response.Write("Conta bloqueada por excesso de tentativas. Verifique o e-mail cadastrado para desbloqueá-la")
	Response.End()
End if

'Aqui é implantado o código para envio de e-mail

strSQL="SELECT * FROM usuarios WHERE login='" & login & "'"
set rsUser=conn.execute(strSQL)
If rsUser.EOF Then
	If Session("usrtent") <> "" Then
		Session("usrtent")=Session("pactent")+1
	Else
		Session("usrtent")=0
	End if
	Response.Redirect("default.asp?ustnt=" & Response.Write(Session("usrtent")) & "")

	If Session("functent") <> "" then
		Session("functent")=Session("functent")+1
	Else
		Session("functent")=0
	End if
	Response.Redirect("default.asp?futnt=" & Response.Write(Session("functent")) & "")

	If login <> rsUser("login") or senha <> ("senha") then
		Response.Redirect("default.asp?erro=negado")
	Else
		Session.Contents.Remove("usrtent")
		Session.Contents.Remove("functent")
		Session.Contents.Remove("nomeFunc")

		Response.Redirect("home.asp")
		End if
	End if

rsBFun.Close
Set rsBFun=Nothing

rsBPac.Close
Set rsBPac=Nothing

rsUser.Close
Set rsUser=Nothing
%>

 

Se alguem puder indentificar o que gera o erro eu agradeço. Enquanto isso vou tentando descobrir sozinho...rs

 

Grato desde já!

 

Ninguem tem uma sugestão do que pode estar incorreto neste código que postei acima?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vendo rapidamente, não identifiquei o erro.

Recomendo "desmembrar" as etapas e ir vendo qual está funcioando, e qual não está.

Se o update está ok, comente-o e vai para a proxima etapa, assim ficará mais fácil isolar o problema e soluciona-lo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver o problema da validação dos dados, porém ainda não consegui fazer contar as tentativas corretamente para cada usuário em especifico. Não sei como limitar as contagens ate 3 e depois bloquear...

 

Sinto que falta pouco, mas não consegui resolver ainda.

 

Vou deixar o code, quem puder me ajudar eu agradeço...

<!--#include file="../conexao.asp"-->
<%
login = Trim(Request.Form("txtlogin"))
senha = Trim(Request.Form("txtsenha"))

sql="SELECT * FROM usuarios where login='" & login & "' and senha='" & senha & "'"
Set rsLog = conn.execute(sql)
If login="" or senha="" then
Response.Redirect("default.asp?erro=negado")
Else
End if
If rsLog.EOF then
	If Session("tentativas") =< 0 Then
		Session("tentativas") = 1
	Else
		tentativas = Session("tentativas") + 1
		Session("tentativas") = tentativas
		strSQL="UPDATE usuarios set tentativas=" & Session("tentativas") & " WHERE login='" & login & "'"
		set rsTent=conn.execute(strSQL)
		Response.Redirect("default.asp?erro=negado")
	End if
		If Session("tentativas") >= 3 Then
			strBloq="UPDATE usuarios set bloqueado=1 WHERE login='" & login & "'"
			set rsBloq=conn.execute(strBloq)
			Response.Write("<script>alert('Conta bloqueada por excesso de tentativas. Um e-mail foi enviado para desbloqueio');</script>")
			Session("user")="bloqueado"
			Response.Redirect("default.asp?x=bloq")
		End If
		If Session("user")="bloqueado" then
			Response.Redirect("default.asp?x=bloq")
		Else
		End if
Else
	sqlOK="UPDATE usuarios set tentativas=0,bloqueado=0 WHERE login='" & login & "'"
	Session("nome")=rsLog("nome")	
	set rsOK=conn.execute(sqlOK)
	Session("status") = "ok"
	Response.Redirect("home.asp?x=" & rsLog("id") & "")
End if
%>

 

Grato!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que o problema esteja no contador de tentativas:

tentativa = 0
...
if tentativa = 3 or tentativa > 3 then
response.write "numero de tentativas excedido"
end if

if tentativa < 3 then
tentativa = tentativa+1
end if

 

É algo mais ou menos assim, adaptando ao codigo é provavel que dê certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.