Ir para conteúdo
Fórum CódigoFonte.net
Entre para seguir isso  
Rafael NH

Problemas com Cookies

Recommended Posts

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 function

Se alguem puder me ajudar com este erro agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

×
×
  • Criar Novo...