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.