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, como tenho visto por ai diversos programadores iniciantes em PHP, com dificuldade de limitar o tempo de uma sessão, resolvi fazer este pequeno e funcional tutorial, vamos lá ?
Vamos criar a página que irá gravar o tempo atual na sessão, assim com o nome dela, e depois criaremos uma outra página para verificar o tempo gravado com o tempo atual, vejamos a página index.php:
index.php
<?php
//Não nos esquecendo de colocar sempre o session start no início do documento, iniciamos o session.
session_start();
//Gravamos o tempo atual em uma sessão, para compararmos depois.
$_SESSION['tempo_permitido'] = mktime(date('H:i:s'));
//suponhamos que nós recebemos o nome do usuário, e gravamos em uma sessão:
$_SESSION['nome_usuario'] = 'iMasters - PHP';
//Se as sessions forem gravadas corretamente, exibimos o nome.
if(isset($_SESSION['nome_usuario']) and isset($_SESSION['tempo_permitido'])){
print 'Olá <b>'.$_SESSION['nome_usuario'].'</b> Seja bem vindo !';
}
?>veririca_tempo.php
<?php
// iniciamos a sessão novamente
session_start();
// pegamos o tempo atual em que estamos:
$agora= mktime(date('H:i:s'));
// subtraimos o tempo em que o usuário entrou, do tempo atual "a diferença é em segundos"
$segundos=(is_numeric($_SESSION['tempo_permitido']) and is_numeric($agora)) ? ($agora-$_SESSION['tempo_permitido']):false;
//definimos os segundos que o usuário deverá ficar logado
define('TEMPO_LOGADO',20);
if($segundos > TEMPO_LOGADO) {
$_SESSION['nome_usuario']='';
print 'Tempo esgotado, efetue login novamente.';
} else {
//Se as sessions ainda existirem, exibimos o nome.
print 'Olá <b>'.$_SESSION['nome_usuario'].'</b> Seja bem vindo !';
}
?>teste.php
<?php
(file_exists('verifica_tempo.php')) ? require_once('verifica_tempo.php'):false;
?>
Conteudos...
Bom pessoal, espero que tenham gostado e entendido, meu objetivo com este tutorial é mostrar apenas a contagem de uma session, Abraços. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.giftente transforma-la em segundos ? hehehe
se for trabalhar com minutos, acredito que essa seja a melhor forma, mais prefiro ao modo que passei.
>
Cara me corrige se estou errado. Eu sempre uso a função expire desta forma:
session_start();
session_cache_expire(30);
//30 minutos para expirar caso fique em repouso ativo (logado porém sem navegação)
session_cache_limiter('private');
Abraços http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
cara
eu tentei da forma que tu me passou e nao funciona
>
session_start();
session_cache_expire(1);
session_cache_limiter('private');
$usu = isset( $_SESSION["usu"] ) ? $_SESSION["usu"]: 0;
if ($usu == 0){ header( "location: index.php" ); exit(); }
Tem uma função que determina o tempo de vida de uma session é o: session_set_cookie_params
@Topic
Bem explicado parabens :)
Cara me corrige se estou errado. Eu sempre uso a função expire desta forma:
//30 minutos para expirar caso fique em repouso ativo (logado porém sem navegação) session_cache_limiter('private'); Abraços http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif