Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

[rush_jeff_rulez]

Login Simultaneo

Recommended Posts

Eae galera-ha !!!fmz totalll !???Seguinte pesso ... tava dando uma olhada aqui ... e encontrei 2 posts sobre como nao permitir logins simultaneos ..... os dois falavam sobre BD ... e um meio incompleto com global.asaEnfim, a ideia de se fazer com BD ... acompanhem comigo:O cara loga ... no momento q ele loga ... registro no BD ... o codigo dele com um status de on ... qdo ele sai sai apago esse registro dele ....se alguem tentar logar com o mesmo codigo eqto ele estiver online ... verifico no bd ... se o satus do codigo for on ... bloqueio o acesso do que estiver tentando entrar.Soh q ai como eu sei q o cara rapou fora ? ... com session timeout ? .... e como ter certeza q foi o codigo especifico q saiu ?Sera q nao tem um jeito mais facil !?Valeu !!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você usa db poe adiciona um campo com a data hora da ultima acao do usuario e se a mesma ultrapassar um limite de tempo especificado por você ele esta off e você apaga o mesmo da lista

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode criar uma Session(codigo) com o código do cara e no global.asa faça um Session_OnEnd que muda o status para off onde o código = Session(codigo).Só fique esperto pois se o cara tentar se logar novamente antes de expirar a sessão não vai conseguir.T+ B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

se naum me engano você pode faser isso com application, de uma pesquisada sobre, ou seja quando o usuario logar, você bloqueia a aplicação e quando ele sair você libera a aplicação.usando os metodos.application.lock --> você libera.application.unlock --> você trava.você pode faser uma ´pesquisa sobre este recurso no asp, achui que para este seu brema da para resolver sim.caso esteja errado alguem me coorija please.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fica esperto tb pq se o cara fechar o Brownser , o Session_OnEnd não Funfa.....O ideal é você obrigar ele à fazer "LogOff", ou então, inlcuir um evento "Window_OnUnLoad()" ... E então você abre um PopUp para fazer o "session end"...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fica esperto tb pq se o cara fechar o Brownser , o Session_OnEnd não Funfa.....

 

O ideal é você obrigar ele à fazer "LogOff", ou então, inlcuir um evento "Window_OnUnLoad()" ... E então você abre um PopUp para fazer o "session end"...

<{POST_SNAPBACK}>

Mas o Session Time out não é executado no servidor? Por quê o Session_OnEnd não funciona se fechar o Browser do cliente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq o evento é "Session_OnEnd"....

E a sessão não é encerrada quando o cara fecha o "Brownser".

<{POST_SNAPBACK}>

Parece estranho Marcelo, quem fecha a sessão é o servidor e mesmo que o cliente feche o browser o servidor vai disparar o Session_OnEnd quando der o timeout por inatividade do cliente.

 

Vou dar uma pesquisada nisso.

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim...Quando der o TimeOut a sessão será encerrada, mas o TimeOut não será executado quando o Brownser for fechado !!!!Imagine o seguinte:Voce tem um timeOut de 10 minutos.O usuário utiliza 5 minutos o sistema e fecha o Bronwser.A sessão dele só será encerrada 5 minutos depois dele ter saído, ou seja, durante 5 minutos ele não vai conseguir se logar novamente...Entendeu ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora entendi o que você queria dizer.Foi essa mesma observação que eu tinha feito anteriormente.Abraços ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta com a Session e um TimeOut mais cara o unico problema que você vai ter é quando o usuario fechar o browser!Que eu saiba tem uma função javascript que quando o o usuario vai fechar o browser aparece um ALERT dissendo se deseja fechar realmente, talvez você pode colocar uma função dentro deste JAVASCRIPT que chame a Session_OnEnd.Pesquisa cara talvez seja possivel!

Compartilhar este post


Link para o post
Compartilhar em outros sites

To gostando ....

 

soh uma coisa, me corrijam se eu estiver errado .... mas assim ... acompanhem comigo no replay:

 

Qdo o cara loga no site eu crio uma Session("codigodele") = True ... deixando ela ativa ... ateh ai sem misterio... ai se um maneh chegar depois e tentar logar ... com o mesmo codigo ... antes de verificar o login e senha eu faço um

 

if session("codigodele") = true then

response.write "este codigo jah esta ativo"

else

ele segue com o script faz a verificacao de login e senha e o cara acessa ao sistema

 

Bom ainda nao tive tempo de testar ... mas queria saber se rola fazer isso !? ....

 

Tah certo q ainda vai ter o problema de se o cara fechar a janela do brownser a session ainda estar ativa ... mas ae rola aquele javazinho lah !!

http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

 

Valeu galera

Compartilhar este post


Link para o post
Compartilhar em outros sites

YAY Sera ??? Sera ???Hoje nao dah mais tempo de testar aqui ... mas vai funcionar igual uma Session q nao permite o usuario q nao fez logon acessar as páginas !!! :D Valeu ... depois eu posto se rolou ou nao !! Maaaaaaaaaaas acho q vai dar certo ... falow !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom cara fiz aki um palinha com apllicação e seus metodos.

(visando sempre que sou aprendiz)

 

arquivo de login - selvei como acao.asp

 

ASP

[*]<%

 

[*]CC="provider=microsoft.jet.oledb.4.0;data source="&server.MapPath("teste.mdb") 'minha coneção

 

[*]

 

[*]'recuperando dados do forumlario

 

[*]FRMusuario=replace(request.Form("usuario"), "'""")

 

[*]FRMsenha=replace(request.Form("senha"), "'""")

 

[*]FRMidem=request.Form("idem") 'apenas para verificar se realmente o formulario foi submetido

 

[*]

 

[*]if FRMidem<>"" then ' se o form foi submetido

 

[*] if FRMusuario="" or FRMsenha="" then 'verifica se o campo usuario e senha foi preenchido

 

[*] session("msg")="Favor informe seu nome de usuario e senha!"

 

[*] response.Redirect("acao.asp")

 

[*] else 'verifica o nome de usuario e senha

 

[*] set rs=server.CreateObject("adodb.recordset")

 

[*] rs.activeconnection=CC

 

[*] rs.source="select usuario, senha from admin where usuario='"&FRMusuario&"' and senha='"&FRMsenha&"'"

 

[*] rs.open()

 

[*] if not rs.eof then 'se o usuario e senha realmente for cadastrado

 

[*] if application("admin")>1 then 'verifica se o administrador ja esta logado

 

[*] session("msg")="Admin já esta logado no sistema!"

 

[*] else 'se naum estiver

 

[*] application("admin")=2 'atribui 2 ao valor da aplication admin.

 

[*] application("usuario")=rs("usuario")

 

[*] Application.Lock() 'trava a cariavel de aplicacao para naum serem alterados seu valor

 

[*] response.Redirect("admin.asp") 'redirecionara para a administração

 

[*] end if

 

[*] else 'se naum tiver este usuario cadastrado, ou a senha informada for invalida

 

[*] session("msg")="Usuário ou senha incorreto!"

 

[*] response.Redirect("acao.asp")

 

[*] end if

 

[*] end if

 

[*]end if

 

[*]%>

 

[*]<!-- Formulario de login -->

 

[*]<html>

 

[*]<head>

 

[*]<title>Teste</title>

 

[*]</head>

 

[*]<body>

 

[*]<form name="form1" method="post" action="acao.asp">

 

[*] <input name="usuario" type="text" id="usuario">

 

[*] <input name="idem" type="hidden" id="idem" value="a"><br>

 

[*] <input name="senha" type="text" id="senha">

 

[*] <input type="submit" name="Submit" value="Submit"><br><br><%=session("msg")%>

 

[*]</form>

 

[*]</body>

 

[*]</html>

 

para verificar se realmente o usuario logou no sistem,

coloco isso na pagina admin.asp

 

ASP

[*]<%

 

[*]if application("usuario")<>"" then ' verifico se a variavel usuario naum esta nula ( vazia )

 

[*] response.Write("Bem vindo "&application("usuario"))&"<br>" 'saudaçoes  :)

 

[*]else ' se tiver nula, mando o usuario embora

 

[*] session("msg")="Usuario inválido"

 

[*] application("admin")=0 'coloco o valor 0 para applicacao para liberar acesso

 

[*] application.UnLock() ' destrava a variavel de applicacao

 

[*] response.Redirect("acao.asp")

 

[*]end if

 

[*]%>

 

e na pagina sair.asp

 

ASP

[*]<%

 

[*]if application("usuario")<>"" then ' verifico se a variavel usuario naum esta nula ( vazia )

 

[*] response.Write("Bem vindo "&application("usuario"))&"<br><br><br>" 'saudaçoes  :)

 

[*] response.Write("<a href=""sair.asp"">Sair</a>") 'link para sair do sistema

 

[*]else ' se tiver nula, mando o usuario embora

 

[*] session("msg")="Usuario inválido"

 

[*] application("admin")=0 'coloco o valor 0 para applicacao para liberar acesso

 

[*] application.UnLock() ' destrava a variavel de applicacao

 

[*] response.Redirect("acao.asp")

 

[*]end if

 

[*]%>

 

Bom como pode ver é isso ai.

Aé galera, pesso todo mundo aé, pois sei que tem caras feras por aki, para dar um verificada ai.

 

t++

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pow galera ... pode crer nao rolou ....

http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

 

Mas ae vou agora usar o esquema q nosso amigo MX LOCO passou ae ... se com ele rolou pq comigo nao ira rolar !!!! http://forum.imasters.com.br/public/style_emoticons/default/shifty.gif

 

Hhahuauha ... valeu pesso ... vcs foram .... FO$# DEMAIS !!!

Depois posto ai o resultado ...

:D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai galera tah complicado ... acredito q seja um erro de escrita ... masssss vamos lah ... to usando o seguinte esquema antes de fazer o logon eu faço essa rotina:

 

ASP

[*]

 

[*]<%

 

[*]login=(Request("login"))

 

[*]senha=(Request("senha"))

 

[*]

 

[*]if application("'"&login&"'")>1 then

 

[*] Response.Write "Este usuário já esta logado no sistema!"

 

[*]else

 

[*]  application("'"&login&"'")=2

 

[*]  Application.Lock()

 

[*]end if

 

[*]%>

 

[*]

 

e na pagina de admin coloco a instrução:

 

ASP

[*]

 

[*]<%

 

[*]if Session("logon")<>"" then

 

[*] response.Write("Bem vindo "&Session("logon"))&"<br>"

 

[*]else

 

[*] application("'"&login&"'")=0

 

[*] application.UnLock()

 

[*] response.Redirect("index.asp")

 

[*]end if

 

[*]%>

 

[*]

 

Acredito q o erro possa ser : application("'"&login&"'") ... pq o nome da aplicação tem q ser o nome de usuario ... pq ai tem como bloquear cada usuario individualmente ...

Pooooor favor .... quem puder dar uma ajuda ae .... valeu

http://forum.imasters.com.br/public/style_emoticons/default/yay.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Semana passada eu passei pelo mesmo problema que você, precisava fazer um script onde verificasse os usuários online, mostrando IP e página que está acessando.Pelo application não dá, o script buga quando o usuário fecha a janela pelo X... já fiz um teste e o número de usuários só aumentava, nunca diminuia. Tem que ser pelo BD sinão você não vai ter dados precisos. Vo te fala como eu fiz:Coloquei em um include onde todas as páginas chamam, umas linhas onde gravam no BD. Ele grava uma sessão = nome do usuário. Se a sessão estiver nula ele grava o ip do usuário, data, hora e página que está acessando, senão atualiza data, hora e página onde o ip = ipdousuário. Se já existe esse ip na lista, ele dá um delete e insereNa página onde lista os usuários, dou um select data, hora, ip e página de todos os registros, onde data = hoje e hora = agora - 15 mins.... assim sempre tenho dados precisos e não duplicados[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

o nome da apllicação naum precisa ser o nome do usuario, poder um outro nome qualquer, o tem que definir para login o valor da mesma, como fis acima. uncionou perfeirtamente, portanto com aquela mesma nescecidade de queando a pessoa fechar o brouser chamar um pop up para desbloquaiar a applicação.at6++

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.