Fiz um sistema de login com cookies para restrição de páginas que só podem ser exibidas se o usuário estiver logado no sistema, porém estou tendo problemas com ele.
Acontece que após logar pela primeira vez no sistema ele abre a página inicial, que é restrita a usuários, mas ao clicar em qualquer menu, indo para outra página também restrita, ele retorna para a página de login como se o usuário não estivesse mais logado, ai então logando novamente isso não acontece mais e consigo acessar as páginas normalmente.
Geralmente após fazer isso (logar duas vezes) mesmo depois de sair do sistema clicando em logout o sistema funciona normalmente, logando novamente ele não da mais erros, geralmente é só na primeira vez após abrir o site que isso acontece e não é sempre, é meio esporádico.
Segue abaixo o código da página de login
<%
response.buffer = true
logado = Request.Cookies("login").item("acessologado")
if logado = "true" then
response.Redirect("admin.asp")
response.End()
end if
url=request.QueryString("url")
IF request.ServerVariables("REQUEST_METHOD")="POST" THEN
'OBTENDO DADOS----------------------------------------------------------------------------
login=request.Form("login")
senha=request.Form("password")
'CONEXÃO----------------------------------------------------------------------------------
OpenConnection
'LOCALIZANDO USUÁRIO----------------------------------------------------------------------
textosql = "SELECT * FROM sis_login WHERE login='"&login&"'"
Set recl = conexao.Execute(textosql)
'AUTENTICANDO E CRIANDO COOKIES-----------------------------------------------------------
IF recl.EOF THEN 'se o usuário não foi localizado
mensagem = "Usuário não localizado ou senha inválida."
ELSE 'se localizou um usuário
IF Strcomp(login,recl("login"),1)=0 AND senha = recl("senha") THEN 'Comparando usuário e senha
Response.Cookies("login").item("acessologado") = "true"
Response.Cookies("login").item("login") = login
Response.Cookies("login").item("LoginId") = recl("id")
id_usuario = recl("id_usuario")
textosql = "SELECT * FROM sis_usuarios WHERE id='"& id_usuario &"'"
Set recU = conexao.Execute(textosql)
Response.Cookies("usuario").item("UserId") = recU("id")
Response.Cookies("usuario").item("UserName") = recU("nome")
Response.Cookies("usuario").item("Email") = recU("email")
Response.Cookies("usuario").item("Privilegio") = recU("privilegio")
IF request.Form("manter")="manter" THEN
Response.Cookies("login").Expires = date + 7
Response.Cookies("usuario").Expires = date + 7
END IF
'GRAVANDO LOG---------------------------------------------------------------------
data = DataAmericano(date)
hora = time
sqlLogs = "INSERT INTO sis_logs (host, ip, data, hora, id_usuario,tipo) values ('"&Request.ServerVariables("REMOTE_HOST")&"','"&request.ServerVariables("REMOTE_ADDR")&"','"&data&"','"&hora&"','"&session("UserId")&"','1')"
Set recLogs = conexao.Execute(sqlLogs)
'ENCERRANDO CONECXÕES E REDIRECIONANDO---------------------------------------------
set recLogs=nothing
recU.close
set recU=nothing
set recLogs=nothing
CloseConnection
IF url="" THEN
response.Redirect("admin.asp") 'redireciona para o sistem
response.End()
ELSE
response.Redirect(url) 'redireciona para a última página visitada
response.End()
END IF
ELSE 'Se não coincidir usuário e senha
mensagem = "Usuário não localizado ou senha inválida."
END IF
END IF 'Fim localizar usuário
END IF 'Fim envio do form
%>
Na primeira parte do código verifico se o usuário já está logado, e se estiver, direciono direto para a página inicial do sistema, caso contrário exibo o formulário de login. Após enviar o formulário verifico os dados no banco localizando o usuário e comparando a senha, e uma vez confirmado os dados são criados os cookies, salvo no banco de dados os dados do login efetuado no sistema e direciono para a página inicial ou a página que o usuário estava tentando acessar que recebo na variável url.
Abaixo o código da validação feita em todas as páginas restritas ao usuário:
'Restringe uma página
Function Restrito()
If Request.Cookies("login").item("acessologado") <> "true" then
'Monta url da página
dim s
s = "http://"
s = s & Request.ServerVariables("HTTP_HOST")
ss = s & Request.ServerVariables("URL")
if Request.QueryString.Count > 0 THEN
ss = ss & "?" & Request.QueryString
end if
'Redireciona para a página de login
Response.Redirect "http://"&Request.ServerVariables("SERVER_NAME")&"/admin/default.asp?url=" &Server.URLEncode(ss)
End if
end function
Pergunta
Rafael NH
Boa tarde amigos
Fiz um sistema de login com cookies para restrição de páginas que só podem ser exibidas se o usuário estiver logado no sistema, porém estou tendo problemas com ele.
Acontece que após logar pela primeira vez no sistema ele abre a página inicial, que é restrita a usuários, mas ao clicar em qualquer menu, indo para outra página também restrita, ele retorna para a página de login como se o usuário não estivesse mais logado, ai então logando novamente isso não acontece mais e consigo acessar as páginas normalmente.
Geralmente após fazer isso (logar duas vezes) mesmo depois de sair do sistema clicando em logout o sistema funciona normalmente, logando novamente ele não da mais erros, geralmente é só na primeira vez após abrir o site que isso acontece e não é sempre, é meio esporádico.
Segue abaixo o código da página de login
<% response.buffer = true logado = Request.Cookies("login").item("acessologado") if logado = "true" then response.Redirect("admin.asp") response.End() end if url=request.QueryString("url") IF request.ServerVariables("REQUEST_METHOD")="POST" THEN 'OBTENDO DADOS---------------------------------------------------------------------------- login=request.Form("login") senha=request.Form("password") 'CONEXÃO---------------------------------------------------------------------------------- OpenConnection 'LOCALIZANDO USUÁRIO---------------------------------------------------------------------- textosql = "SELECT * FROM sis_login WHERE login='"&login&"'" Set recl = conexao.Execute(textosql) 'AUTENTICANDO E CRIANDO COOKIES----------------------------------------------------------- IF recl.EOF THEN 'se o usuário não foi localizado mensagem = "Usuário não localizado ou senha inválida." ELSE 'se localizou um usuário IF Strcomp(login,recl("login"),1)=0 AND senha = recl("senha") THEN 'Comparando usuário e senha Response.Cookies("login").item("acessologado") = "true" Response.Cookies("login").item("login") = login Response.Cookies("login").item("LoginId") = recl("id") id_usuario = recl("id_usuario") textosql = "SELECT * FROM sis_usuarios WHERE id='"& id_usuario &"'" Set recU = conexao.Execute(textosql) Response.Cookies("usuario").item("UserId") = recU("id") Response.Cookies("usuario").item("UserName") = recU("nome") Response.Cookies("usuario").item("Email") = recU("email") Response.Cookies("usuario").item("Privilegio") = recU("privilegio") IF request.Form("manter")="manter" THEN Response.Cookies("login").Expires = date + 7 Response.Cookies("usuario").Expires = date + 7 END IF 'GRAVANDO LOG--------------------------------------------------------------------- data = DataAmericano(date) hora = time sqlLogs = "INSERT INTO sis_logs (host, ip, data, hora, id_usuario,tipo) values ('"&Request.ServerVariables("REMOTE_HOST")&"','"&request.ServerVariables("REMOTE_ADDR")&"','"&data&"','"&hora&"','"&session("UserId")&"','1')" Set recLogs = conexao.Execute(sqlLogs) 'ENCERRANDO CONECXÕES E REDIRECIONANDO--------------------------------------------- set recLogs=nothing recU.close set recU=nothing set recLogs=nothing CloseConnection IF url="" THEN response.Redirect("admin.asp") 'redireciona para o sistem response.End() ELSE response.Redirect(url) 'redireciona para a última página visitada response.End() END IF ELSE 'Se não coincidir usuário e senha mensagem = "Usuário não localizado ou senha inválida." END IF END IF 'Fim localizar usuário END IF 'Fim envio do form %>Na primeira parte do código verifico se o usuário já está logado, e se estiver, direciono direto para a página inicial do sistema, caso contrário exibo o formulário de login. Após enviar o formulário verifico os dados no banco localizando o usuário e comparando a senha, e uma vez confirmado os dados são criados os cookies, salvo no banco de dados os dados do login efetuado no sistema e direciono para a página inicial ou a página que o usuário estava tentando acessar que recebo na variável url. Abaixo o código da validação feita em todas as páginas restritas ao usuário:'Restringe uma página Function Restrito() If Request.Cookies("login").item("acessologado") <> "true" then 'Monta url da página dim s s = "http://" s = s & Request.ServerVariables("HTTP_HOST") ss = s & Request.ServerVariables("URL") if Request.QueryString.Count > 0 THEN ss = ss & "?" & Request.QueryString end if 'Redireciona para a página de login Response.Redirect "http://"&Request.ServerVariables("SERVER_NAME")&"/admin/default.asp?url=" &Server.URLEncode(ss) End if end functionSe alguém puder me ajudar com este erro agradeço.
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.