Clipper On Line • Ver Tópico - DICA: Controle de sessão am ASP

DICA: Controle de sessão am ASP

Discussão sobre outras linguagens de programação.

Moderador: Moderadores

 

DICA: Controle de sessão am ASP

Mensagempor rochinha » 22 Jul 2013 17:36

Amiguinhos,

Vendo os questionamentos relativos ao controle de usuários em páginas WEB e sabendo que existem tópicos aqui que abordam o tema mas usando .PHP, resolvi postar a dica usando .ASP.

O processo de controle consiste em ver se o usuário já está logado ou não por meio do objeto session do ASP.
<% if Session("logado") = "nao" then
      response.redirect("NaoLogado.asp")
   end if %>
<html>
    ...
</html>


No trecho acima a variável logado poderá conter o valor nao ou qualquer outra coisa, mas só estou avaliando o nao.

Se a respostar for nao o fluxo de operação será direcionado para a página NaoLogado.asp. Caso a resposta seja diferente, continua a operação abrindo alguma página de informações ao usuário.

No trecho a seguir, o script em ASP critica se o usuário está cadastrado em uma tabela de acesso e permite ou não que fique logado no sistema.

<HTML lang="PT" dir="LTR">
<HEAD>
   <TITLE>Contato</TITLE>
   <META http-equiv="content-type" content="text/html; charset=windows-1251">
</HEAD>
<BODY>
<%
    Response.Buffer = True
    pos    = instrrev(lcase(request.servervariables("path_translated")),lcase(scriptrelativefolder)& "\" & lcase(formaction))
    db_dir = left(request.servervariables("path_translated"), pos-1 )
    db     = db_dir &".\"
    set cnn= server.createobject("adodb.connection")
    cnn.open "Driver={Microsoft dBase Driver (*.dbf)};;DBQ="& db &";"
    set acessos=cnn.execute("select * from acessos where liberado = 'S'" )
    Session("logado")="nao"
    do while not acessos.eof
       vnome          = acessos("nome")
       vsenha         = acessos("senha")
       vnivel         = acessos("nivel")
       vpaginainicial = acessos("pagina")
       vliberado      = acessos("liberado")
       If Request.form("UserEmail") = (vnome) then
          If Request.form("UserPass") = (vsenha) then
             response.clear
             Session("usuario")=(vnome)
             Session("logado")="sim"
             If not IsEmpty(vpaginainicial) then
                response.redirect(vpaginainicial)
             end if
          end if
       end if
       acessos.movenext
    loop
    Session("logado")="nao"
    response.redirect("join_erro.asp")
%>
</BODY>
</HTML>


Explicando um pouco como acontece a critica:

Pega o caminho real de onde estaria a tabela a ser manuseada montando o caminho:
    pos    = instrrev(lcase(request.servervariables("path_translated")),lcase(scriptrelativefolder)& "\" & lcase(formaction))
    db_dir = left(request.servervariables("path_translated"), pos-1 )
    db     = db_dir &".\"


Cria uma conexão e abre yma tabela padrão dBase:
    set cnn= server.createobject("adodb.connection")
    cnn.open "Driver={Microsoft dBase Driver (*.dbf)};;DBQ="& db &";"


Executa uma filtragem trazendo somente usuário que tenham o campo liberado como "S":
    set acessos=cnn.execute("select * from acessos where liberado = 'S'" )


Seta inicialmente a variável logado como "nao"
    Session("logado")="nao"
    'response.cookies("autenticacao")("anome") = ""
    'response.cookies("autenticacao")("asenha") = ""
    'response.cookies("autenticacao")("liberado") = " "


Pesquisa na filtragem pelos dados passados:
    do while not acessos.eof
       vnome          = acessos("nome")
       vsenha         = acessos("senha")
       vnivel         = acessos("nivel")
       vpaginainicial = acessos("pagina")
       vliberado      = acessos("liberado")
       If Request.form("UserEmail") = (vnome) then
          If Request.form("UserPass") = (vsenha) then


Carrega nas variáveis vnome, vsenha, etc os dados oriundos dos campos nome, senha, etc:
       vnome          = acessos("nome")
       vsenha         = acessos("senha")
       vnivel         = acessos("nivel")
       vpaginainicial = acessos("pagina")


A tabela acessos.dbf tem os campos nome(Char,30), senha(Char,10), nivel(Num,1), pagina(Char,100), liberado(Char,1).

Caso o usuário seja encontrado na filtragem, a variável logado será setado com sim e o usuário será redirecionado para a sua página pessoal.

O formulário de login do usuário precisa de dois campos apenas, o de nome(type text) e o de senha(type password). O Formulário deve ser do tipo POST.

Os ids de cada campo são UserEmail e UserPass, respectivamente.

Quando digo:
Request.form("UserEmail")


Estou requisitando do formulário os campos UserEmail e UserPass.

Então mãos a obra.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4545
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 806 vezes
Mens.Curtidas: 245 vezes



Retornar para Outras linguagens de programação

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro