Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boas,
Estou buscando uma solução para evitar o acesso simultâneo ao sistema, quando o usuário faz o acesso ao sistema registro, código da sessão (Session.ID), codigo do usuário, IP, e status (indicando que o usuário está logado) em uma tabela (tbl_logAcesso).
O problema acontece quando o usuário sai do sistema.
Depois de procurar muito na net e tentar de várias formas resolvi abrir esse tópico, baseado no tópico abaixo:
http://forum.imasters.com.br/index.php?/topic/229771-como-impedir-acesso-simultaneo/
Estou utilizando diversas formas de "logout", vou citar algumas.
Tentei solucionar o problema com o global.asa (Session_OnEnd), o problema está como identificar a sessão que foi encerrada, ja tentei com cookie - mas como previa não funcionou - por último tentei o seguinte:
registro as sessões em uma variável de aplicação (Array)
if isNull(Application("activeusers")) = true then
Application("activeusers") = Session(Session.sessionID)
else
Application("activeusers") = Application("activeusers")&","&Session(Session.sessionID)
end if
no evento Session_OnEnd, tento verificar as sessões não-ativas e atualizar o status no banco, sem exito.
arrUser = Split(Application("activeusers"),",")
for i=0 to UBound(arrUser)
if (isNull(Session(arrUser(i)))=true) OR (Session(arrUser(i)) = "") then
Set Oconn = Server.CreateObject("ADODB.Connection")
Oconn.ConnectionString="Provider=SQLOLEDB.1;Data Source=192.168.0.100;Initial Catalog=banco;User Id=si;Password=*********;"
Oconn.open
Oconn.Execute("INSERT INTO tbl_logAcesso (cod_sessao,cod_usuario,nb_ip,navegador) VALUES (arrUser(i),71,'IP','MagnoWeb')")
if UBound(arrUser) > 1 then
Application("activeusers") = Replace(Application("activeusers"),",arrUser(i)","")
else
Application("activeusers") = Null
end if
end if
Next
Nem sei mais oq fazer, alguém pode contribuir com alguma sugestão??? raciocínio ja se foi :huh: .
vlw,
Magnoweb B)
o mais coerente é usar tempo de inatividade, mas depende de cada critério e segmento do site, dê uma pesquisada no fórum, que existem ótimos artigos sobre isso, ja para o user por exemplo, fez login e tentar logar novamente, você pode usar uma session, tipo session("logado"), que ficrá true , caso ele faça login , evitando legar na mesma máquina, e para não logar em maquinas diferentes, use um bd, vinculado ao tempo de inatividade, quando estiver logado um campo no bd, por exemplo, logado será igual true e quando fizer logout, você dá um update no bd, para passar a false.
Desconheço uma forma de fechar 100% essa questão
O que normalmente se faz para considerar desconectado alem do clássico botão de logout seria o uso de um tempo de inatividade no sistema para dizer que o usuário está off
Aqui no fórum por exemplo é de 30 minutos