Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
tenho a seguinte situação: Em um servidor temos por padrão um tempo limite para expirar a sessão do usuário por inatividade, e dentro deste servidor temos várias aplicações que expiram no mesmo tempo. Porem eu gostaria que uma aplicação minha que fica neste servidor não expirasse por inatividade, ficasse sempre ativa, a não ser que o usuário fechasse o navegador.
Já tentei de tudo pra configurar a sessão dessa aplicação mas ela pega o tempo do servidor sempre. Saindo das configurações, uma ideia foi o <meta> que poderia ser usado, mas se tivesse algo mais sutil pro usuário não perceber seria melhor.
Qualquer ajuda será bem vinda! Valeu!
Manter a sessão não tem como fazer isso, mas tem outra solução, que é guardar um $_COOKIE que informa que o usuário tem permissão para ter sempre sessão iniciada ou seja, caso a sessão expire, ao reabrir o site, vc pode criar uma função para criar nova sessão caso contenha o COOKIE no browser, entendeu?
Exemplo:
Um Usuário Inicia Sessão e seleciona a caixinha de Manter sessão iniciada, depois ao iniciar sessão, caso a caixinha estiver selecionada, é criado um COOKIE no browser do usuário, caso o usuário desligue o pc, ou feche o browser, como já deve calcucar, a sessão irá expirar, mas Caso tenha o cookie, vc pode fazer com que a sessão seja denovo criada no browser ;)
<?php
session_start();
if(isset($_COOKIE['sessao'])) {
//Cria novamente a sessão
$_SESSION......
....
}
?>
Espero ter ajudado :)Procurei na net e na documentação do PHP tem isso, vê se ajuda:
<?php
/ Define o limitador de cache para 'private' /
session_cache_limiter('private');
$cache_limiter = session_cache_limiter();
/ Define o limite de tempo do cache em 30 minutos /
session_cache_expire(30);
$cache_expire = session_cache_expire();
/ Inicia a sessão /
session_start();
echo "O limitador de cache esta definido agora como $cache_limiter<br />";
echo "As sessões em cache irão expirar em $cache_expire minutos";
?>Valeu Galera, vou testar a sua ideia Bruno.
Mau, já tentei essa, e não funcionou. Ele pega o tempo determinado no servidor mesmo.
Bom dia Galera,
ziquinha isso ein! nada na net pra repopular as variaveis da sessão depois que elas ficam vazias por inatividade.
Bruno, no exemplo que você deu, na hora de criar a sessão novamente como você pensou em inserir os valores de cada variável da sessão, já que elas ficam vazias depois de um tempo inativa?
Seria inserindo o valor do cookie nela? Tipo:
$_SESSION['ssNome'] = $_COOKIE['ckNome'];
Agradeço desde de já!
Bom dia.
Primeiramente e necessário saber, sua aplicação utiliza session sendo assim, ao inicializar ou criar uma session com a opção session_start() em cima e claro seu session nunca vai espirar a não ser a utilização do
unset($_SESSION['nomeSession']);
Sendo assim e necessário verificar se o usuário tem outra session que e responsável pela destruição de todas as session.
ao logar deixa a seguinte linha.
<?php
session_start();
var_dump($_SESSION);
?>
Faça sempre um DEBUG e verifique as sessions criada quando logar-se.
Assim verifique se existe alguma com end_time end que recebe o tempo via time() para assim, saber o tempo que toda a aplicação e destruída.
Quando uma sessão e inicializada ou no caso criada achou que só existe 3 maneiras para destruí-la.
1 - fechando o navegador.
2 - destruido toda a sessão com o session_destroy();
3 - Usando um unset();
Então peço que post o código utilizado para assim podermos ajuda-lo.
Olá Paulinho,
coloquei o var_dump($_SESSION) e retornou apenas as minhas variáveis da sessão, segue:
array(6) {
["ssCodigo"]=>
&string(2) "27"
["ssNivel"]=>
&string(1) "1"
["ssTipo"]=>
&string(1) "1"
["ssNome"]=>
&string(22) "TESTE"
["ssEmail"]=>
&string(37) "teste@teste.com.br"
["ssSenha"]=>
&string(8) "teste"
}Então se não utilizar o session_destroy não ira perder a sessão.
Quando for utilizar em outra pagina e só colocar.
<?php
session_start(); // sempre no começo de tudo.
?>
Assim, poderá sempre utilizar suas session criadas.
OBS: Sempre em uma pagina .php
>
Então se não utilizar o session_destroy não ira perder a sessão.
Quando for utilizar em outra pagina e só colocar.
<?php
session_start(); // sempre no começo de tudo.
?>
Assim, poderá sempre utilizar suas session criadas.
OBS: Sempre em uma pagina .php
paulinhosupriano, não é bem assim, qualquer sessão expira, não fica para sempre no browser! Por isso eu dei a ideia dos cookies! Para reabrir a sessão!
-----------------------------------------------------------------------
>
Bom dia Galera,
ziquinha isso ein! nada na net pra repopular as variaveis da sessão depois que elas ficam vazias por inatividade.
Bruno, no exemplo que você deu, na hora de criar a sessão novamente como você pensou em inserir os valores de cada variável da sessão, já que elas ficam vazias depois de um tempo inativa?
Seria inserindo o valor do cookie nela? Tipo:
$_SESSION['ssNome'] = $_COOKIE['ckNome'];
Agradeço desde de já!
Sim, pode fazer assim, ou simplesmente deixar num cookie o ID e, depois pega o resto pela database, atraves desse id e cria novamente as variáveis da sessão, pois pode pesar os cookies! é apenas uma dica, mas pode também deixar as informações todas nos cookies ;)
Valeu Bruno!!!
Os cookies funcionaram...e esse esquema de pegar só o ID é a saída mesmo!
:joia:
Valeu todo mundo que participo do tópico tbm!
Abraços
É para manter somente a sua sessão?