calintro 0 Denunciar post Postado Junho 24, 2008 O problema é o seguinte: No meu PC as sessões são destruídas sem problemas quando eu fecho o navegador, mas no PC do cliente isso não acontece, a sessão fica armazenada e não se destrói nunca. Já procurei no Google e testei algumas soluções, mas nenhuma funcionou no PC dele. O que pensei então é em destruir a sessão por tempo ocioso no site, qual o melhor jeito de fazer? Já testei algumas funções do PHP que não deram certo, porque não tenho acesso ao php.ini do servidor. Ou até mesmo uma boa solução pra sessões se destruirem ao fechar o navegador. session_start(); $_SESSION["nome"] = $nome; $_SESSION["id"] = $id; Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Junho 24, 2008 procure por configurações em tempo de execução http://php.oregonstate.edu/manual/en/sessi...nfiguration.php veja também como usar controles de conexão http://php.net/ignore_user_abort Compartilhar este post Link para o post Compartilhar em outros sites
Ricardo Andrietta 1 Denunciar post Postado Junho 24, 2008 Cara... tenta executar alguma coisa no evento "unload" do navegador, tipo assim: <body onUnload="<?php session_destroy()?>"> Compartilhar este post Link para o post Compartilhar em outros sites
calintro 0 Denunciar post Postado Junho 24, 2008 procure por configurações em tempo de execução http://php.oregonstate.edu/manual/en/sessi...nfiguration.php veja também como usar controles de conexão http://php.net/ignore_user_abort Eu tentei usar algumas coisas daí com o ini_set e não tive muito sucesso, devo estar fazendo alguma coisa errado. Cara... tenta executar alguma coisa no evento "unload" do navegador, tipo assim: <body onUnload="<?php session_destroy()?>"> O problema do onUnload é que quando troca de página ele também vai destruir a sessão. No caso do meu sistema que é administrativo e cheio de seções fica inviável, qualquer outra seção que o usuário vá ele vai acionar o onUnload. Teria alguma opção no onUnload para que seja feita só quando clicar no X mesmo? Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Junho 24, 2008 nao sei o que você está fazendo , mas com certeza o controle de conexao resolve o problema http://php.net/ignore_user_abort Compartilhar este post Link para o post Compartilhar em outros sites
calintro 0 Denunciar post Postado Junho 24, 2008 nao sei o que você está fazendo , mas com certeza o controle de conexao resolve o problema http://php.net/ignore_user_abort Eu estava usando o comando ini_set para alterar o tempo de duração das sessões, mas não deu muito certo. Exemplo do que fiz: session_cache_limiter('private'); session_cache_expire(1); session_start(); Como eu usaria esse ignore_user_abort? Eu dei uma lida e pesquisada no Google sobre isso mas não entendi muito bem. Obrigado! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Junho 24, 2008 o exemplo está na proprio link antes, execute isso: tmp.php <?php session_start(); $sessPath = ini_get('session.save_path'); $sessCookie = ini_get('session.cookie_path'); $sessName = ini_get('session.name'); $sessVar = 'foo'; echo '<br>sessPath: ' . $sessPath; echo '<br>sessCookie: ' . $sessCookie; echo '<hr>'; if( !isset( $_GET['p'] ) ){ // instantiate new session var $_SESSION[$sessVar] = 'hello world'; }else{ if( $_GET['p'] == 1 ){ // printing session value and global cookie PHPSESSID echo $sessVar . ': '; if( isset( $_SESSION[$sessVar] ) ){ echo $_SESSION[$sessVar]; }else{ echo '[not exists]'; } echo '<br>' . $sessName . ': '; if( isset( $_COOKIE[$sessName] ) ){ echo $_COOKIE[$sessName]; }else{ if( isset( $_REQUEST[$sessName] ) ){ echo $_REQUEST[$sessName]; }else{ if( isset( $_SERVER['HTTP_COOKIE'] ) ){ echo $_SERVER['HTTP_COOKIE']; }else{ echo 'problem, check your PHP settings'; } } } }else{ // destroy session by unset() function unset( $_SESSION[$sessVar] ); // check if was destroyed if( !isset( $_SESSION[$sessVar] ) ){ echo '<br>'; echo $sessName . ' was "unseted"'; }else{ echo '<br>'; echo $sessName . ' was not "unseted"'; } } } ?> <hr> <a href=tmp.php?p=1>test 1 (printing session value)</a> <br> <a href=tmp.php?p=2>test 2 (kill session)</a> se estiver funcionando, provavelmente há algo errado no seus scripts. Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Junho 24, 2008 as session se auto destroi quando fecha o navegador, porque as session nao tem tempo de vida se seu cliente ta fechando o navegador e quando abre ele se mantem logado por exemplo é porque tem cookie salvando o estado do cliente alias só pra constar as session tbm sao cookies só que elas sao salvas no servidor, e quando se fecha o navegador elas sao apagadas, entao eu acho melhor você ver qual o problema do micro cliente porque nao é normal do que tentar fazer alguma gambiarrada no sistema. mas em todo caso se quiser postar como você ta criando as session posta ai OBS: o exemplo com unload nao ira funcionar porque o PHP le a pagina inteira e nao sera executado nada no unload mesma coisa que tentar fazer um if em javascript com resultado em PHP, pois o PHP nao vai respeitar a if, como falei o PHP le a pagina inteira ate o fim e vai executando tudo que encontrar no caminho. Compartilhar este post Link para o post Compartilhar em outros sites
Ricardo Andrietta 1 Denunciar post Postado Junho 25, 2008 Bom dia a todos... Realmente o unload da forma que eu postei não vai funcionar, o Fabyo tem razão no que disse. No meu caso aqui no unload eu estou executando uma função usando AJAX que executa as tarefas que preciso. Quanto ao problema das mudanças de página, aqui eu estou usando frames, então isso funciona. Se colocasse no frame principal, e quando os frames secundários fossem alterados (mudança de páginas) nada aconteceria. Somente executaria a função quando realmente saisse do sistema. Mas aparentemente você não está usando frames né?! Pra falar a verdade agora eu também estou bem curioso para ver a solução deste caso... continuarei pensando em alguma coisa por aqui. sds Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Junho 26, 2008 o meu PC as sessões são destruídas sem problemas quando eu fecho o navegador, mas no PC do cliente isso não acontece, a sessão fica armazenada e não se destrói nunca o trecho e negrito. você checou se isso acontece e como ocorre ? se você estiver se baseando apenas numa informação que um cliente te informou é melhor verificar. o que pode ter ocorrido é o cliente usar browser que tenha suporte a navegação por abas. as sessões permanecem ativas na janela. se o usuário fechar uma aba e abrir novamente a sessão continuará sendo utilizada a não ser que seja explicitamente destruída. Compartilhar este post Link para o post Compartilhar em outros sites
calintro 0 Denunciar post Postado Junho 26, 2008 Eu pedi pra ele verificar isso, inclusive a janela de "Downloads" caso utilize o Firefox também. Enfim, o final da história ficou assim: Testei em vários PCs e todos ficaram certos, então o problema era no PC do cliente mesmo, mas conversamos e ficou tudo ok. Nada de códigos mirabolantes ou gambiarrentos hahahaa Obrigado a todos http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Compartilhar este post Link para o post Compartilhar em outros sites
Bruno RafaeI 3 Denunciar post Postado Outubro 28, 2013 Amigo se o problema está no "COOKIE" basta você colocar unset($_COOKIE) //irá limpar o cookie antes de abrir a sessão: session_start(); Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Outubro 28, 2013 Amigo se o problema está no "COOKIE" basta você colocar unset($_COOKIE) //irá limpar o cookie antes de abrir a sessão: session_start(); Tem um monte de tópico novo, porque não respondê-los? Compartilhar este post Link para o post Compartilhar em outros sites