FórumGdH

Página Inicial do Guia do Hardware

Registrar FAQ Lista de Membros Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Voltar   FórumGdH > Profissional > Programação, scripts, web e banco de dados
Bem-vindo ao FórumGdH
Não se esqueça de se registrar, é grátis . Nós temos 701.164 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.

Resposta
 
Opções do Tópico
Antigo 06-04-2005, 17:36   #1 (permalink)
Kleber Costa
Zumbi
 
Registrado em: Aug 2001
Localização: Recife - PE
Mensagens: 5.177
Reputação: 25 Kleber Costa está indo no caminho certo
Enviar mensagem via MSN para Kleber Costa
Padrão Javascript x onUnload

Estou precisando matar uma sessão mesmo para aquele usuário que usa navegador com abas(firefox por exemplo), feche a aba que roda o sistema. Logo de cara deu tudo certo, no onUnload do browser foi só executar uma função em javascript pra abrir um popup, executar o código e exibir uma msg tipo: "Para sua segurança a sessão foi finalizada automaticamente!". O problema é que no caso do usuário atualizar a página, ele é deslogado e aparece a msg.

Em javascript tem como eu saber se o usuário está carregando novamente a página?
Pq aí eu teria como montar uma função, se o usuário está atualizando a página - não execute tal coisa. Sacaram?

Se tiver alguma solução alternativa tb é bem vinda
__________________
Salve! Ó terra dos altos coqueiros!
De belezas soberbo estendal!
Nova Roma dos bravos guerreiros
Pernambuco, imortal, imortal!


Linux User #262254
Kleber Costa está offline   Responder com Quote
Antigo 06-04-2005, 18:17   #2 (permalink)
rwar
GeeK
 
Avatar de rwar
 
Registrado em: Aug 2002
Localização: Porto Alegre/Passo Fundo (RS) - 90010-290
Mensagens: 2.463
Reputação: 20 rwar está indo no caminho certo
Enviar mensagem via MSN para rwar
Padrão Re: Javascript x onUnload

Citação:
Postado Originalmente por Kleber Costa
Estou precisando matar uma sessão mesmo para aquele usuário que usa navegador com abas(firefox por exemplo), f...
Grande Kleber!!!

Não sei te dizer precisamente se há alguma possibilidade, mas já tentou utilizar refresh em javascript? Creio que se pode utilizá-lo de alguma maneira.

Um abraço.
__________________
Em busca de certificações Linux (LPI + RHCE)!!!
rwar está offline   Responder com Quote
Antigo 06-04-2005, 19:15   #3 (permalink)
jqueiroz
Highlander
 
Avatar de jqueiroz
 
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 8
Mensagens: 86.070
Reputação: 257 jqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputação
Padrão

Pq não usa um cookie de sessão?

Assim, mesmo que a pessoa esqueça de fechar o sistema ao fechar o navegador, ao retornar, o cookie será inválido... pra completar, vc põe ele pra expirar em 5 ou 10min sem uso.
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns
jqueiroz está offline   Responder com Quote
Antigo 08-04-2005, 12:33   #4 (permalink)
Kleber Costa
Zumbi
 
Registrado em: Aug 2001
Localização: Recife - PE
Mensagens: 5.177
Reputação: 25 Kleber Costa está indo no caminho certo
Enviar mensagem via MSN para Kleber Costa
Padrão

[roni]
Grande Roni!!! Tudo certinho por aí?

Eu já tentei de tudo hehehe, até apelei pra abrir uma janela em fullscreen e dar um nome a ela e não sei como fazer pra perguntar se ela está fechada(window.closed)! Pq como eu vou executar um código na página e perguntar se ela mesma está fechada hehehe! O que tá faltando pra fazer isso funcionar é o "jogo de cintura" em javascript que não tenho! já to quase desistindo :|
Quanto ao refresh, eu não consegui achar nada na internet que pudesse me ajudar

Abração!

[jqueiroz]

O problema maior é que eu quero deletar a sessão(sess_73uh73e37) lá no servidor!! Aí com cookie de sessão se o usuário não clicar em logout.php(por exemplo) vai ficar o arquivo lá
Se eu não conseguir fazer isso que estou querendo, vou usar cookies como vc sugeriu!

Valeu! Abraços!
__________________
Salve! Ó terra dos altos coqueiros!
De belezas soberbo estendal!
Nova Roma dos bravos guerreiros
Pernambuco, imortal, imortal!


Linux User #262254
Kleber Costa está offline   Responder com Quote
Antigo 08-04-2005, 12:43   #5 (permalink)
Acquila
Super Participante
 
Registrado em: Mar 2002
Mensagens: 654
Reputação: 18 Acquila está indo no caminho certo
Padrão

Kleber, há algum motivo importante pra ter que deletar os restos mortais da sessão no servidor ? Explico: quando um usuário fecha o navegador, o arquivo de sessão no servidor é "esvaziado", ficando com 0k de tamanho, ou seja, apenas uma referência. Esses arquivos não interferem no desempenho do servidor e nem influenciam as sessões válidas.
De repente vc pode mesmo continuar usando sessões e, por preciosismo, pode criar um evento no Kron ( ou uma tarefa agendada no win) para de tempos em tempos apagar os arquivos cujo tamanho seja 0k.

Se eu não entendi o problema e falei bobagem, desenha preu entender... :mrgreen:

[]!
Acquila está offline   Responder com Quote
Antigo 08-04-2005, 13:08   #6 (permalink)
Kleber Costa
Zumbi
 
Registrado em: Aug 2001
Localização: Recife - PE
Mensagens: 5.177
Reputação: 25 Kleber Costa está indo no caminho certo
Enviar mensagem via MSN para Kleber Costa
Padrão

Kleber, há algum motivo importante pra ter que deletar os restos mortais da sessão no servidor?
Eu mudei o path pra guardar as sessões dentro do meu "site" por exemplo, o dir das sessions seria home/meusite/sessiondata/. Além disso minha preocupação maior é com os navegadores com abas! Pq mesmo que aba seja fechada, a sessão ainda é válida pois o navegdor ainda não foi fechado.
Essa idéia de fazer um script pro kron executar eu até passou pela minha cabeça, mas eu fiquei pensando: "Imagina se tem alguém logado na hora que isso rodar hehe vai derrubar o cara do sistema". Agora essa idéia de deletar os arquivos com 0k é bem interessante pq exclui essa possibilidade de derrubar o alguém do sistema!

Pra ser bem franco, minha vontade mesmo é forçar para que o script de logoff seja executado mesmo sem a "colaboração" do usuário.

Entendeu tudo :mrgreen:
__________________
Salve! Ó terra dos altos coqueiros!
De belezas soberbo estendal!
Nova Roma dos bravos guerreiros
Pernambuco, imortal, imortal!


Linux User #262254
Kleber Costa está offline   Responder com Quote
Antigo 08-04-2005, 14:10   #7 (permalink)
Acquila
Super Participante
 
Registrado em: Mar 2002
Mensagens: 654
Reputação: 18 Acquila está indo no caminho certo
Padrão

Hmm... na minha opinião a questão das abas não chega a mudar muita coisa. Quando não haviam as abas, tinhamos o Netscape e o IE e normalmente abríamos mais de uma página em janelas separadas, isso quando o próprio navegador não fazia esse "favor" pra nós. Normalmente uma pessoa que usa um navegador sem abas abre mais de uma página e nesse caso a sessao continua existindo, mesmo que apenas exista um popup chato minimizado na barra de tarefas.

Pra forçar o logoff, como vc quer, a solução é a que vc mesmo citou: no UnLoad da página, abra uma janela popup de um script php que teste se existe a sessão e a destrua. Vc pode simplesmente usar um session_destrioy() ou um unset() e depois usar um print pra exibir uma mensagem formatada na tela, tipo "tchau, mané! Sua sessão foi destruida".

Eu pessoalmente não gosto de usar javascript. Claro que muita coisa acaba caindo no javascript e eu tenho que engolir minha incompetência, mas se algo puder ser feito de outra forma, eu procuro até achar...

Quer que eu faça um exemplo do negócio pra vc aprimorar??

[]!
Acquila está offline   Responder com Quote
Antigo 08-04-2005, 15:26   #8 (permalink)
Kleber Costa
Zumbi
 
Registrado em: Aug 2001
Localização: Recife - PE
Mensagens: 5.177
Reputação: 25 Kleber Costa está indo no caminho certo
Enviar mensagem via MSN para Kleber Costa
Padrão

o popup é aberto e executa esse código abaixo:
Código:
<?php /* * * @Author Kleber Costa <kleber.costa@gmail.com> * @Package ###### * @Version 1.0 * @Copyright Kleber Costa * */ require_once("../config.inc.php"); $_SESSION = array(); if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000, '/'); } session_destroy(); $Smarty = &new Setup; $Smarty->display("extranet_logout.tpl"); unset($Smarty); ?>
Eu consegui fazer "tudo", o que ficou faltando foi como ter um controle no onUnload. Pq se o usuário atualizar a página, ela é primeiro descarregada pra depois carregar de novo!! Como no onUnload da página vai abrir um popup e executar o código, o usuário quando for atualizar a página, sem querer, pq a culpa é do progamador :twisted: , vai "efetuar o logoff".

Eu pensei numa solução que teoricamente deve funcionar mas como é tão "gambiarra" que fica sem noção fazer um bagulho desse e além de tudo tem um pequeno problema! Saca só?

1 - No onUnload vou redirecionar a página pra index.php?action=unload e colocaria na sessão a url corrente, pra pegar mais tarde. Aí nesse index.php eu faria em js um código pra perguntar se a janela winX(por exemplo) está aberta, caso esteja é considerado como um refresh e redireciona para a url que está na guardada na sessão, senão abre uma janela e executa o código de logoff.

No item 1, tem um problema, se o usuário fechar a janela, não vai ter como redirecionar para o index.php?action=unload! Outra coisa, eu não sei bem js, por isso não tenho 100% de certeza de que eu possa perguntar se a janela WinX tá aberta por causa da hierarquia das janelas, janela filha e tal aquelas coisas...

Acquila, vc sabe como fazer esse controle para identificar, quando usuário está atualizando a página ou está fechando e/ou aba/navegador no onUnload?
__________________
Salve! Ó terra dos altos coqueiros!
De belezas soberbo estendal!
Nova Roma dos bravos guerreiros
Pernambuco, imortal, imortal!


Linux User #262254
Kleber Costa está offline   Responder com Quote
Antigo 08-04-2005, 17:50   #9 (permalink)
Acquila
Super Participante
 
Registrado em: Mar 2002
Mensagens: 654
Reputação: 18 Acquila está indo no caminho certo
Padrão

Kleber, eu fui cortar o cabelo e fiquei lá pensando nesse problema. O evento Reload implica em um unLoad inicial, ou seja, não há como diferenciar um do outro porque o unload SEMPRE vai existir. Por outro lado, existe o evento onBeforeUnload que executa algo LOGO ANTES de fechar a janela atual. Vc pode usar esse evento pra abrir o index destruindo a sessão, mas vai continuar com o problema do evento ocorrer quando a página for recarregada.

[]!
Acquila está offline   Responder com Quote
Antigo 08-04-2005, 20:47   #10 (permalink)
AValle
Ubbergeek
 
Avatar de AValle
 
Registrado em: Dec 2002
Localização: Rio de Janeiro
Idade: 34
Mensagens: 4.518
Reputação: 22 AValle possui ótimo potencialAValle possui ótimo potencial
Padrão

Kleber, desculpe pela demora.
Vou pesquisar sobre outras formas mais "internas" para se fazer isso e te falo depois ok?
Postei aqui só pra dar uma alô mesmo.
__________________
Entretenimento é aqui!
AValle está offline   Responder com Quote
Antigo 13-04-2005, 2:32   #11 (permalink)
Kleber Costa
Zumbi
 
Registrado em: Aug 2001
Localização: Recife - PE
Mensagens: 5.177
Reputação: 25 Kleber Costa está indo no caminho certo
Enviar mensagem via MSN para Kleber Costa
Padrão

[Acquila]
É mesmo

[Avalle]
Tranquilo!! Fico no aguardo!!
__________________
Salve! Ó terra dos altos coqueiros!
De belezas soberbo estendal!
Nova Roma dos bravos guerreiros
Pernambuco, imortal, imortal!


Linux User #262254
Kleber Costa está offline   Responder com Quote
Antigo 13-04-2005, 9:56   #12 (permalink)
jqueiroz
Highlander
 
Avatar de jqueiroz
 
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 8
Mensagens: 86.070
Reputação: 257 jqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputação
Padrão

Alguma chance de colocar um evento no crontab pra matar as sessões inativas há mais de X minutos?
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns
jqueiroz está offline   Responder com Quote
Antigo 19-04-2005, 11:54   #13 (permalink)
Kleber Costa
Zumbi
 
Registrado em: Aug 2001
Localização: Recife - PE
Mensagens: 5.177
Reputação: 25 Kleber Costa está indo no caminho certo
Enviar mensagem via MSN para Kleber Costa
Padrão

[jqueiroz]
Seria a mesma idéia que o Acquila sugeriu lá em cima.

--------------------------------------------------------------------------------------------------

Hoje eu fui ver qual o motivo da minha matrícula em uma cadeira ter sido indeferida e lembrei que o SIG@ tem esse esquema de forçar o logoff do usuário, dei uma olhadinha no código! E tem esse mesmo "bug" que eu estou apanhando pra resolver! Pelo menos não sou o único :mrgreen:
__________________
Salve! Ó terra dos altos coqueiros!
De belezas soberbo estendal!
Nova Roma dos bravos guerreiros
Pernambuco, imortal, imortal!


Linux User #262254
Kleber Costa está offline   Responder com Quote
Antigo 26-07-2006, 18:36   #14 (permalink)
thics
Newbie
 
Registrado em: Jul 2006
Mensagens: 1
Reputação: 0 thics está indo no caminho certo
Enviar mensagem via MSN para thics
Padrão

Gente, vê se vcs acham loucura oq eu estou fazendo. Fiz assim:

function abrejanela(){
if (exit == 1)

window.open('sair.php','Sair','scrollbars=no,width =100,height=100,left=10,top=10');
}
exit=1;

daí no body onload fica assim:

body onload="exit=0" onunload="abrejanela" :roll:

E em cada link coloco assim:

a href='blabla.php' onclick="exit=0"

E para saír:

a href='javascript:window.close();' onclick="exit=1"

Digam se vcs acharam mta loucura isso q eu fiz ou se atende as necessidades de vcs... :wink:
thics está offline   Responder com Quote
Antigo 29-09-2006, 23:42   #15 (permalink)
ricardodf
Newbie
 
Registrado em: Sep 2006
Mensagens: 1
Reputação: 0 ricardodf está indo no caminho certo
Padrão

Brother eu sei o que vc ta precisando, e sei como resolver eu ja passei por isso, é um gato da ***** mais funciona, se nao tiver resolvido me fala que eu posto aqui...
ricardodf está offline   Responder com Quote
Antigo 02-10-2006, 15:34   #16 (permalink)
FMC
Zumbi
 
Registrado em: Apr 2002
Localização: São Paulo Capital
Mensagens: 8.334
Reputação: 28 FMC está indo no caminho certo
Enviar mensagem via ICQ para FMC
Padrão

Bom, eu teria preferência pelo script no cron que remove os arquivos, você pode usar o find para determinar quais arquivos foram modificados mais recentemente, isso evitaria que você derrubasse usuários logados.

O popup que desloga o usuário pode falhar facilmente, basta haver um bloqueador de popup que a idéia já vai pras cucuias! hehe. Também existem os casos onde a conexão do usuário simplesmente cai, não possibilitando que código algum seja executado. Levando estas situações em conta, com certeza você terá sessões abandonadas na sua pasta de sessions.

Enfim, caso não queira MESMO usar o crontab, então você pode escrever um script em PHP que lê toda a pasta de sessions e determina quais arquivos foram modificados recentemente e remove os outros, então vc coloca o script como include e tudo deve funcionar. Enfim, isso iria gerar um load desnecessário no servidor.

Ainda acho que o crontab é a melhor alternativa! hhe

Falow!
__________________
FMC = Fábio Magalhães Catunda
FMC está offline   Responder com Quote
Antigo 12-11-2007, 17:05   #17 (permalink)
h4nKy
Newbie
 
Registrado em: Nov 2007
Mensagens: 1
Reputação: 0 h4nKy está indo no caminho certo
Padrão

Citação:
Postado Originalmente por ;2434611
Brother eu sei o que vc ta precisando, e sei como resolver eu ja passei por isso, é um gato da ***** mais funciona, se nao tiver resolvido me fala que eu posto aqui...
Eu to precisando disto também cara, você poderia me ajuda? Já te enviei uma MP. Agradeço e aguardo resposta.
h4nKy está offline   Responder com Quote
Antigo 07-10-2009, 17:39   #18 (permalink)
galerainfo
Newbie
 
Registrado em: Apr 2008
Mensagens: 1
Reputação: 0 galerainfo está indo no caminho certo
Padrão poderia me mandar essa solução. por favor

Citação:
Postado Originalmente por ;2434611
Brother eu sei o que vc ta precisando, e sei como resolver eu ja passei por isso, é um gato da ***** mais funciona, se nao tiver resolvido me fala que eu posto aqui...
Poderia postar aqui a solução que voce citou que possui..

Obrigado
galerainfo está offline   Responder com Quote
Resposta


Opções do Tópico

Regras de Mensagens
Você não pode criar tópicos
Você não pode postar respostas
Você não pode anexar arquivos
Você não pode editar suas mensagens

Código vB está Ligado
Smiles estão Ligado
Código [IMG] está Ligado
Código HTML está Desligado
Ir para...


Horários baseados na GMT -2. Agora são 8:01.