Jump to content
Fórum Script Brasil
  • 0

Problemas com cookies


Rafael NH

Question

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 to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 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

Edited by Rafael NH
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...