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
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:Se 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.