Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dan_lorenzato

Expirar tempo de um Sessão

Recommended Posts

Olá,

 

Estou precisando de limitar o tempo ocioso que um usuário fique no site, mas não estou sabendo fazer isso.

 

Toda pagina que meu usuário acessa, eu usei um "require" carregando meu arquivo access.php, que valida se o usuário está logado, e nesse mesmo arquivo eu colocaria um cookie ou um session renovando esse tempo da sessão; se o usuário ultrapasasse esse tempo limite sem carregar nada, exibia a mensagem de "Sua sessão expirou!".

 

o código do meu arquivo de verificação é esse:

<?phpsession_start();require_once('Connections/banco.php');if (!isset($_SESSION["usuario"]) || !isset($_SESSION["senha"])) {echo 'Nenhum Usuário Logado no Sistema!';} else {$login_usuario = $_SESSION["usuario"];$senha_usuario = $_SESSION["senha"];$resultadologin = mysql_query("select * from tbl_users where login = '$login_usuario' AND password = '$senha_usuario'");$confirm = mysql_num_rows($resultadologin);}?>

Alguém pode me dar uma luz!?

 

Grato....

Compartilhar este post


Link para o post
Compartilhar em outros sites
Então bacana, até coloquei como explicou lá...mas não deu certo. Sei lá se fiz certo. Pq coloquei pra expirar em um minuto, ai eu suponho que teria que deletar minhas Sessions de usuário e senha do cache, ou não!? Ficou assim:

<?phpsession_start();session_cache_limiter();session_cache_expire(1);require_once('Connections/banco.php');if (!isset($_SESSION["usuario"]) || !isset($_SESSION["senha"])) {echo 'Nenhum Usuário Logado no Sistema!';} else {$login_usuario = $_SESSION["usuario"];$senha_usuario = $_SESSION["senha"];$resultadologin = mysql_query("select * from tbl_users where login = '$login_usuario' AND password = '$senha_usuario'");$confirm = mysql_num_rows($resultadologin);}?>

É assim mesmo!?

 

Então senhores, Testei na minha máquina aqui o uso do "session_cache_limiter()" de um tópico aqui no forum, que pelas explicações da galera e do manual parece ser simples, mas comigo não funciona. Então se alguem puder me explicar certas coisas, pq a gente tem que setar o session_cache_limiter como PRIVATE!? Tem a necessidade de setar o session_cache_limiter() e o session_cache_expire() como variaveis e aplicar em alguma condição pra funcionarem!? São duvidas bobas que eu tenho... http://forum.imasters.com.br/public/style_emoticons/default/upset.gif O teste q fiz aqui é assim...usei meu script de log pra gravar no cache o usuário e senha, e apontando pra um arquivo PHP que exibe esses dois valores na tela.

<?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(3); $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"; echo $_SESSION["login_usuario"];echo $_SESSION["senha_usuario"];?>

Só que depois de três minutos, eu mando atualizar a pagina e o $_SESSION ainda exibe os valores gravados no cache....ele não teria que zerar esses valores!? o que ficou faltando pra mim fazer.... http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

 

Saudações! Depois de tentar incansavelmente fazer com que o "session_cache_expire()" funcionasse, acabei desistindo dele. consegui conversar com pessoas mais experientes em PHP, e todos já tiveram ou tem problema no uso dessa função, o que me desanimou bastante. um amigo meu me passou uma solução que me atendeu prontamente, e vou deixar aqui pra quem enfrenta o mesmo problema que eu:

$temposessao = 60; //em segundossession_start(); if ($_SESSION["sessiontime"]) { 	if ($_SESSION["sessiontime"] < (time() - $temposessao)) { 		session_unset();		echo "Seu tempo Expirou!";		} } else { 	session_unset();} $_SESSION["sessiontime"] = time();

Funciona perfeitamente pra fazer uma sessão expirar por tempo. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif até...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Saudações!Depois de tentar incansavelmente fazer com que o "session_cache_expire()" funcionasse, acabei desistindo dele.consegui conversar com pessoas mais experientes em PHP, e todos já tiveram ou tem problema no uso dessa função, o que me desanimou bastante.um amigo meu me passou uma solução que me atendeu prontamente, e vou deixar aqui pra quem enfrenta o mesmo problema que eu:

$temposessao = 60; //em segundossession_start(); if ($_SESSION["sessiontime"]) { 	if ($_SESSION["sessiontime"] < (time() - $temposessao)) { 		session_unset();		echo "Seu tempo Expirou!";		} } else { 	session_unset();} $_SESSION["sessiontime"] = time();
Funciona perfeitamente pra fazer uma sessão expirar por tempo. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif até...
Desisti de usar este exemplo do manual nunca funcionou comigo , talvez pq sempre testei localmente e tenha que configurar algo no php.ini.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é colega.

Estou com o mesmo tipo de necessidade.

No manual do PHP a explicação é bem obscura.

Acessei o iMasters para ver se achava "soluções" :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.