Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas com cookies


Rafael NH

Pergunta

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 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

  • 0

Olá amigos. Já fiz com session e tive outros erros semelhantes, toda vez o usuário tinha que inserir a senha novamente pois o sistema não identificava que estava logado (ao mudar de uma página para outra). Quando mudei para cookies isso parou, agora ele só da erro na primeira vez que se acessa o site e faz o login, depois não da mais erro, além de que com cookies tenho a opção de manter o usuário logado para acessos futuros. Quanto a habilitar os cookies, eu oriento o usuário do sistema quanto a isto, pois se trata de um sistema CMS destinado a uso dos meus clientes e não do internauta que acessa o site.

Obrigado

Editado por Rafael NH
Link para o comentário
Compartilhar em outros sites

  • 0
sua autenticação tem várias brechas na segurança. te aconselho a refazer toda essa parte antes de resolver qualquer coisa

Olá amigo.

O sistema é simples, não precisa de uma segurança muito aprimorada, porém, se puder me indicar as falhas eu agradeço, pois certamente será de ajuda para aprendizado.

E quando ao problema com o login? alguma sugestão?

Obrigado.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...