Ir para conteúdo

POWERED BY:

Arquivado

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

Tomer Simis

[Resolvido] Destrui seção ao fechar pagina

Recommended Posts

Olá feras http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Estou desenvolvendo um sistema para uma radio e no painel de administração há um botão para entrar no AR. Ao clicar no botão ele vai para a página noar.php e faz a verificação se a session login e senha está criada e na tabela ADMIN do banco de dados ele muda o status para ON. Mas eu gostaria que quando o cara fechasse a janela a session fosse destruida como se pagina ainda estivesse aberta, para dar tempo de fazer a query de colocar OFF no status. Segue o código que muda o status:

 

if(isset($_SESSION['login_session']) AND isset($_SESSION['senha_session'])){
$entrar = mysql_query("UPDATE tbadmin SET status='ON' WHERE login='$login' AND senha='$senha'");
}

Me ajudem por favor =(

Abraços

 

PS: Não dá pra editar o título do post aqui?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já fiz isso uma vez também.

 

Na época,a solução que bolei foi gerar um ID de sessão personalizado (sha1() + mt_srand() + microtime()), passava esse ID para session_id() (logo após session_start()) e também o armazenava no banco de dados, em uma tabela de ID's de sessão.

 

Depois criei uma função que se utilizaria desse recurso. Ela iniciava a sessão (com o mesmo nome da que teve o ID personalizado registrado e gravado) e obtia o ID atual através do próprio session_id() (porém atribuído à uma variável, já que queria obter seu valor)

 

Em seguida, ainda nessa função, selecionava no banco de dados o ID de sessão que batia com o IP do usuário e comparava-os. Se fosse diferente, significava que a sessão foi destruída e que um novo identificador foi gerado por, talvez, uma re-autenticação e, com isso em mãos, executava um query que precisava (no meu caso, limpara uma lista de páginas visualizadas).

 

A falha desse método session_is_destroyed() como resolvi chamar seria a renovação do IP por parte do reset do modem (ou reconexão com o provedor). Mas se você quiser mais segurança pode, ainda, gravar um cookie no PC com as mesmas informações.

 

Foi uma solução inédita (pois não havia registros de similaridades pela Internet) que me serviu bem por um ano. Veja se é tão útil para você quanto foi pra mim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas como irei usar o unset assim que o usuario fechar a pagina?

 

A session está criada, quando o usuario fechar a pagina eu quero que ele execute uma query. Pronto, simplifiquei =D

 

Me ajudem plz =[

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso já envolve client-side

 

os novatos geralemnte aplicam gambiarras usando onunload() do HTML

 

mas não recomendo isso.

 

para o seu caso, um método eficaz é verificar o status de atividade dentro do site

 

utilize a mesma lógica de um script de "usuários online"

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que eu não entendo como se pode executar uma query com o browser fechado o.O

Acho que o jeito é usar JS mesmo

 

Tá fogo arranjar solução menos gambiarrística =[

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, dei uma olhada em uns scripts e vi que eles adicionavam na tabela o ip e talz...

 

Maaaas... Sou burrico:

O que não entendo é: Se não tem ninguem no site, como o PHP vai ser executado para verificar quantos registros tem na tabela?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que não entendo é: Se não tem ninguem no site, como o PHP vai ser executado para verificar quantos registros tem na tabela?

está exatamente na "lógica de um sistema de usários online"

 

banco de dados

tabela users_online

idUser
	LastOnLineDate

 

 

no php, faça um script que, sempre que uma página for executada, fará a checagem na tabela

basta excluir todos que estiverem com "LastOnLineDate" maior que 30 minutos por exemplo, ou defina um tempo limite.

 

30 minutos sem navegar no site, provavelmente nao está mais no site, mas não quer dizer que fechou o browser..

o tempo, você deve definir conforme for conveniente.

 

a cada página que for navegando faça um update na tabela, atualizando o campo "LastOnLineDate" para a data e hora atual.

 

 

obs: Quando o browser é fechado, a sessão é destruída automaticamente, a não ser que tenha gravado em cookie, mas aí é outro assunto.

Fechar uma aba é diferente de fechar um janela. Se o usuário manter a mesma janela aberta, mesmo fechando uma aba, a sessão será mantida pelo browser.

 

 

apenas lembrando que isso é uma sugestão e não uam solução.

adote um método que seja conveniente para o seu caso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza hinom, entendi agora =DDDDD

Brigadão pela ajuda cara, tu és fera =P

 

Abraços

deve ser por isso entao que ele é Administrador do site!

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.