Jump to content
Campão

session_cache_expire

Recommended Posts

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!

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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!!

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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>

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.