Campão 0 Denunciar post Postado Novembro 1, 2010 E ai galera, beleza? Tenho algumas duvidas sobre a função session_cache_expire(); Eu preciso declarar essa função toda vez que for trabalhar com session_start()? Ex: em toda página eu teria session_cache_expire(1440); session_start(); Se eu declarar em toda pagina, como foi escrito acima, o tempo para expirar a questão se "atualiza"? Ex: eu fiz o login e como tem a função "session_cache_expire(1440);" minha sessão vai durar 24 horas! Se eu ficar nessa pagina por 10 horas e entrar em outra página que tb contenha o codigo "session_cache_expire(1440);", minha sessão terá mais 14 horas de vida ou voltara a ter 24 horas? Quando o usuário fecha o navegador, a session é destruida, ou ela permanece até o tempo que eu digitei na função ?(Ex: 1440 minutos) Desculpe se não fui claro nas duvidas, é que estou com um problema, tenho um site com um simulado de prova, que demora de 30 minutos a 1 hora, e alguns usuarios reclama que quando acabam o simulado, ao invez de irem para o gabarito, eles volta para a pagina de login, pois a session morreu! Aproveitando o gancho, pra mostrar exatamente o que eu quero com tudo isso, é o seguinte, gostaria que minha session durasse 24 horas, mas queria que ela morresse assim que o usuario fechasse o navegador, para nao correr risco dele voltar no dia seguinte e pegar o final das 24 horas que foi dada no dia anterior! Abraços e obrigado pela atenção! Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Novembro 1, 2010 Se eu ficar nessa pagina por 10 horas e entrar em outra página que tb contenha o codigo "session_cache_expire(1440);", minha sessão terá mais 14 horas de vida ou voltara a ter 24 horas? Isso é facil de testar. Reduza o tempo para 2 minutos e faça o teste. Se ao acessar a outra pagina faltando 10 segundos o cache não expirar após os 10 segundos faltantes, significa que a cada página que você acessar terá 2 minutos. Acredito que sejá a lógica já que você redefine o limite de cache da sessão toda vez que você abre uma página. O Cache de uma sessão é correspondente a ela toda. Por isso quando se usa a função session_start() você mantém a sessão nas demais paginas. Presume-se então que para limitar o cache uma unica vez e funcionar para todas as páginas, basta você utilizar o session_cache_expire() uma unica vez. Faça os testes com 2 minutos. Acredito que você vai descobrir mais rapidamente a solução desta forma do que tentando com 24h. ^_^ Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Campão 0 Denunciar post Postado Novembro 1, 2010 Fala Periscuelo, tudo bem? Obrigado pela atenção! Cara eu ja tinha testado, e deu um resultado pior do que eu imaginava, por isso eu vim aqui postar a duvida, pq se alguem tiver um conhecimento mais amplo, poderia me explicar com clareza. Olha o link do teste ai! Clique aqui Abaixo o codigo de cada pagina cache1.php <?php session_cache_expire(3); session_start(); $_SESSION["leandro"] = "ok"; echo $_SESSION["leandro"]; echo "<a href='cache2.php'>link</a>"; ?> cache2.php <?php session_cache_expire(3); session_start(); echo $_SESSION["leandro"]; echo "<a href='cache3.php'>link</a>"; ?> cache3.php <?php session_cache_expire(3); session_start(); echo $_SESSION["leandro"]; echo "<br /><a href='cache1.php'>link</a>"; ?> Eu fiz o seguinte teste, entrei na pagina cache1.php, foi escrito na tela "ok", ai fiquei +/- 2 min. Depois, cliquei no link e fui para a pagina cache2.php, a palavra "ok" foi escrita normalmente, o que significa que a session estava "viva", e nessa página e fiquei +/- 2 minutos novamente, o que acabaria com os 3 minutos do codigo colocado na primeira pagina. Cliquei novamente no link e fui para a pagina cache3.php e a palavra "ok" estava sendo escrita normalmente, o que me fez deduzir que cada vez que o codigo fosse colocado, a pagina "atualizaria" o tempo da session Porem eu testei depois e na primeira pagina eu fiquei mais de 5 minutos, quando eu cliquei no link, fui para a pagina cache2.php e nela foi escrito a palavra "ok" normalmente, entao me confundi, pq eu tinha programado para que a session, ficasse viva por 3 minutos! Então desconsiderei meu teste e postei minha duvida!!! E sobre as outras questoes, você sabe me falar alguma coisa?? Obrigado pela atenção, abraços!! Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Novembro 1, 2010 Amigão você leu a parte em que disse para utilizar o session_cache_expire() em apenas UMA das páginas ao invés de usar em todas? Testou desta forma? Entendeu a lógica que te falei? Quanto a manter a sessão mesmo fechando o navegador basta fazer outro teste. Efetue o login no sistema, feche completamente o navegador (e não somente a aba do mesmo) e depois tente acessar a pagina sem logar. Assim você vai saber se é ou não mantido a sessão. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
Leo Barreto 0 Denunciar post Postado Dezembro 16, 2014 Amigão você leu a parte em que disse para utilizar o session_cache_expire() em apenas UMA das páginas ao invés de usar em todas? Testou desta forma? Entendeu a lógica que te falei? Quanto a manter a sessão mesmo fechando o navegador basta fazer outro teste. Efetue o login no sistema, feche completamente o navegador (e não somente a aba do mesmo) e depois tente acessar a pagina sem logar. Assim você vai saber se é ou não mantido a sessão. Abraços. apesar do post antigo, o meu problema é recente e o mesmo que o do autor. e como o post não está como marcado resolvido, resolvi postar nele. estou utilizando as funções session_cache_expire(1); // acredito que seja apenas um minuto session_start(); apenas na página index.php que é a página do login. fiz um teste e esperei mais de 4minutos e qdo fui realizar uma ação via ajax, a realizei tranquilamente. minha index.php <?php include './header.php'; require_once '_application/_db/db_login.php'; $sql = "SELECT `id_empresa` FROM `EMPRESA` GROUP BY `id_empresa`;"; $result = mysqli_query($conn, $sql) or die(mysql_error($conn)); session_cache_expire(1); session_start(); ?> <div id="main_content"> <div id="main_head" > <div id="logo" > <img src="_icons/logo.jpg" > </div> </div> <div id="login"> <form id="frmLogin" name="frmLogin" action="pedidos.php" method="POST"> <fieldset> Empresa: <select name="log_empresa" id="log_empresa" > <!--<option>Selecione uma Empresa</option>--> <option></option> <?php while($empresa = mysqli_fetch_assoc($result)){?> <option value="<?php echo $empresa["id_empresa"];?>"><?php echo $empresa["id_empresa"];?></option> <?php }?> </select> </fieldset> <fieldset> <label>Usuário: </label> <input type="text" name="log_user" id="log_user" > </fieldset> <fieldset> <label>Senha: </label> <input type="password" name="log_pwd" id="log_pwd" value="" placeholder="Digite sua senha" > </fieldset> <?php if(!empty( $_SESSION['login_erro'])) : ?> <span><?php echo $_SESSION['login_erro'];?></span> <?php $_SESSION['login_erro'] = ''; ?> <?php endif; ?> <br /> <a href="cadastro.php" id="cadastro" name="cadastro" >Cadastrar novo usuário</a> <button type="submit" id="confirm_log" name="confirm_log" ><img src="_icons/confirm.png"> Confirmar</button> </form> </div> </div> Compartilhar este post Link para o post Compartilhar em outros sites