Ir para conteúdo

POWERED BY:

Arquivado

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

Marrabel

[Resolvido] Autenticação de usuário

Recommended Posts

Bom dia,

 

Eu tenho uma pequena dúvida...

Eu fiz um pequeno sistema de login que possui a verificação das credenciais pelo BD (MySql) e verifica o numero de tentativas.

 

Eu criei 4 páginas:

 

uma que contém a conexao com o BD (esta funcionando normalmente), um default.asp (formulario de login), o login.asp que faz a validacao dos dados e a página home.asp que responde com uma mensagem de boas vindas se o login estiver ok.

 

a minha dúvida são as seguintes: Como faço para que quando o usuário logue, alem de um simples "bem-vindo" mostrar ao lado o nome do usuario correspondente ao login do mesmo. E como fazer para que a autenticacao que foi efetuada, continue autenticada no decorrer das páginas, a nao ser que o usuário faça logoff?

 

Eis os códigos:

 

default.asp

<% Session("erros_login") = Session("erros_login") + 1%>
<% 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">
  Senha: <input type = "password" name = "txtsenha">
<% 
If Session("erros_login") >=4 Then %>
Você excedeu o número de tentativas
<%Else%>
  <input type = "submit" value = "Enviar">
  <%End if%>
</form>
</body>
</html>

 

login.asp

<!--#includes file="conexao.asp" -->
<%   
  sql="SELECT * FROM tabela WHERE login='" & request.form("txtlogin") & "' and senha='" & request.form("txtsenha") & "'"
  set rsLog=conn.execute(sql)
     if not rsLog.eof then
     session("status") = "ok" 
     response.redirect("home.asp")
     else 
     response.redirect("default.asp?erro=negado") 
     end if
     set rs = nothing
     rs.close
%>

 

home.asp

<%
if not session("status") = "ok" then
response.redirect("login.asp?erro=negado") 
else
end if
%>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Home</title>
</head>

<body>
Bem-Vindo
Clique <a href="default.asp?user=logoff"> aqui </a> para deslogar
<%
Session.Abandon()
%>
</body>
</html>

 

Qualquer ideia eu agradeço

 

Grato.

 

Por favor retirem o tópico anterior, de alguma forma apareceu dois tópicos. Perdão

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom

acho que pelo que entendi é simples

Para exibir o login você pode por em uma session

Session("login") = Request("txtlogin") ' isso se passar o login

para mais segurança voce pode guardar o ip

Session("ip_usuario") = Request.ServerVariables("REMOTE_ADDR")

 

Ai depois em todas aa paginas antes de tudo voce poe uma condiçao que valida

If Session("login") <> "" And Session("ip_usuario") = Request.ServerVariables("REMOTE_ADDR") Then

 

'aqui vai todo conteudo

 

Else

'qualquer coisa de sua preferencia

End IF

 

espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom

acho que pelo que entendi é simples

Para exibir o login você pode por em uma session

Session("login") = Request("txtlogin") ' isso se passar o login

para mais segurança voce pode guardar o ip

Session("ip_usuario") = Request.ServerVariables("REMOTE_ADDR")

 

Ai depois em todas aa paginas antes de tudo voce poe uma condiçao que valida

If Session("login") <> "" And Session("ip_usuario") = Request.ServerVariables("REMOTE_ADDR") Then

 

'aqui vai todo conteudo

 

Else

'qualquer coisa de sua preferencia

End IF

 

espero ter ajudado

 

Entendi sua ideia, mas isso eu jogaria no login.asp?

 

na home.asp eu colocaria tipo "Bem-Vindo <%Session("login")%> ?

 

E como fazer para se manter autenticado durante a nevagação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo, bem completo

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo, bem completo

 

Muito interessante xanburzum, bem funcional mesmo.

 

Porem como sou leigo, precisava de algo mais simples e ainda funcional, mas para a interface do usuario (cliente)

 

Acho que se eu seguir a sua ideia do login neste exemplo eu me perderia legal :ermm:

 

Se voce tiver algum outro exemplo ou uma dica para o código que implantei, eu agradeço

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois de fazer o login

as sessions recebem no atodo login .. tipo

if passou do login esta correto você manda ele receber as sessions

depois nas outras paginas secundarias ....

todas que dependem do usuario estar logado voce coloca o trecho que confere o ip e o login

é muito pratico

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois de fazer o login

as sessions recebem no atodo login .. tipo

if passou do login esta correto você manda ele receber as sessions

depois nas outras paginas secundarias ....

todas que dependem do usuario estar logado voce coloca o trecho que confere o ip e o login

é muito pratico

Desculpe a ignorância mas pode me dar um exemplo?

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

a seção que voce criou como exemplo chama o login

 

mas eu desejo colocar o nome da pessoa que corresponde ao login que foi usado para autenticar

 

respondendo aqui

Bem-Vindo
Clique <a href="default.asp?user=logoff"> aqui </a> para deslogar

 

depois do bem-vindo o nome do usuario que se logou.

 

 

Qualquer ideia eu agradeco

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo mais simples.

 

formulário

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

 

e aqui o action

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

pra exibir o login é só escrever na tela

Bem vindo <%=Session("login")%>.

anderson, eu não desejo mostrar o login da pessoa quando se loga e sim o nome respectivo ao login cadastrado na tabela.

 

Por exemplo: Quando o usuario Joao se conectar e ele possuir o login joaoclaudio, quando ele se logar deve aparecer Bem-Vindo Joao e nao Bem-Vindo joaoclaudio.

 

Essa é uma das minhas dúvidas.

 

Se houver como representar isso está resolvido minha questão.

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode criar uma outra sessão com o nome do usuário:

Session("nome") = rs("nome") 

 

E usar a Session("nome") no bem vindo:

Bem vindo <%=Session("nome")%>.

mas como ele vai mostrar o nome que representa o login que foi autenticado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sql = "SELECT NOME FROM TABELA WHERE LOGIN = '"&SESSION("LOGIN")&"'"
Rst.Open Sql, Con
Nome = Rst("NOME")

 

Pronto, pegou o nome!!

 

Ou faça o que o Vinicius Lanni disse.

Creio que você tenha que estudar banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim, você tendo um campo Nome, onde esse é cadastrado o nome do usuario, por exemplo nome do usuario Alexandre Roberto da silva, e login alendrersilva, você faz a consulta acima como citado e recupera apenas o campo nome de usuario.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sql = "SELECT NOME FROM TABELA WHERE LOGIN = '"&SESSION("LOGIN")&"'"
Rst.Open Sql, Con
Nome = Rst("NOME")

 

Pronto, pegou o nome!!

 

Ou faça o que o Vinicius Lanni disse.

Creio que você tenha que estudar banco de dados.

Na verdade eu conheco boa parte dos comandos sql. Tenho que estudar mais sobre seções, pois não estou entendendo muito como representa-las no código

 

O que eu entendi foi assim: (me corrijam caso esteja errado)

 

no comando sql eu ponho

 

sql="SELECT * FROM tabela WHERE NomeUser=' & Session("nome") & "'"
set rsNome=conexao.execute(sql)

 

e chamar esta seção na pagina home.asp por exemplo assim:

 

Bem-Vindo <%=Session("nome")%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na hora de logar, você tem usuario e senha nao tem ?

Se ele digitar certo, você coloca o Login em sessão.

 

Session("Login") = Request.Form("login")

 

Pronto, está em sessão.

Se você quiser mostrar em outra página, é só fazer:

Response.Write(Session("Login"))

 

Se você nao quer mostrar o Login, mas sim o Nome do cara.

Na hora de logar, você puxa o campo NOME também e coloca em sessão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na hora de logar, você tem usuario e senha nao tem ?

Se ele digitar certo, você coloca o Login em sessão.

 

Session("Login") = Request.Form("login")

 

Pronto, está em sessão.

Se você quiser mostrar em outra página, é só fazer:

Response.Write(Session("Login"))

 

Se você nao quer mostrar o Login, mas sim o Nome do cara.

Na hora de logar, você puxa o campo NOME também e coloca em sessão.

 

Desculpe a ignorancia novamente...

 

Me surgiu uma dúvida no que voce disse. Neste exemplo que voce deu, ele armazena na seção o que foi digitado no campo login

Session("Login") = Request.Form("login")

 

No caso, como eu represento a Session("Nome")?

Por um comando SQL que busca o nome do usuario baseado na Session("Login")?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exato.

 

Mas no começo quando loga, você já faz uma consulta SQL para saber se o usuário existe não é ?

Nesse SELECT você coloca o campo nome para trazer ele e colocar numa variável de sessão.

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.