Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Oi pessoal beleza, bom estou tendo um problema, queria salavar a sessão quando o usuário clicasse no botão X do browser, não queria fazer isso com JS não acho muito confiavel por JavaScript.
Queria saber se existe uma forma de se fazer isso por php puro?
Qual o sentido de fazer isso?
So pra eu entender..
Sera que não existe uma forma de eu detectar o encerramento da sessão, nem se for uma configuração no php.ini? sei la, configuração de servidor talvez?
Cara, tem uma função javascript que faz isso.
Mas essa abordagem é muito falha.. pq se chamar a função no <body unload=''> o sistema assume que ao mudar de página o usuário esta fechando a pagina tambem. Sem contar que se voce desenvolver uma função so pra isso ele só reconhece como fechamento se o usuario fechar no X...
Mas ve ai.. deve ter alguma coisa.. mas eh javascript..
Cara, tem uma função javascript que faz isso.
Mas essa abordagem é muito falha.. pq se chamar a função no <body unload=''> o sistema assume que ao mudar de página o usuário esta fechando a pagina tambem. Sem contar que se voce desenvolver uma função so pra isso ele só reconhece como fechamento se o usuario fechar no X...
Mas ve ai.. deve ter alguma coisa.. mas eh javascript..
Gigante bobagem o que falou...
O negócio é que,por padrão,o cookie das sessões é setado só até o fechamento do browser.Pra burlar isso,é só você setar um cookie chamadao PHPSESSID (ou o nome do cookie padrão das sessões [especificado no php.ini]),com o id da session e o tempo dele a ser mantido.
Exemplo:
<?php
session_start();
$_SESSION['exemplo'] = "Olha o exemplo!";
setcookie('PHPSESSID'. session_id(), time()+3600); //
echo $_SESSION['exemplo'];
?>
Roda isso uma vez.Fecha o browser,vai no script e comenta ou apaga a linha 3.Ficando:
<?php
session_start();
//$_SESSION['exemplo'] = "Olha o exemplo!";
setcookie('PHPSESSID'. session_id(), time()+3600); //
echo $_SESSION['exemplo'];
?>
Abre o browser e testa!
Abraço!
Agradeço a resposta.. mais o meu maior problema nem é esse. Eu preciso executar uma rotina no momento em que a sessão expira... Tem como? Ou vou ter de fazer esse controle com o tempo de expiração e usando tabelas??
Pode me dizer que rotina seria?E como seria?
Pode facilitar!
Então é o seguinte, eu tenho de enviar informação para outro sistema, faço isso através do cURL, essa informação é gravada atualmente assim que o usuário entra na páginae já é enviada. Porém agora além dessa informação eu preciso gravar também se ele clicou em determinados botões na página. Queria enviar tudo junto ( a informação gravada no acesso e do que foi clicado ) pq não queria mexer no sistema que recebe essas informações. Basicamente é isso, pensei em fazer o envio dessas informações qdo a sessão fosse encerrada, por isso a minha dúvida! Caso não tenha como pensei em gravar esses dados numa tabela e depois processá-los através de um cron job....
Alguém tem alguma sugestão melhor?
Quando o usuário fechar o browser, a sessão vai expirar. É assim que funciona sessões.