Ir para conteúdo

Arquivado

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

Alaerte Gabriel

Determinando o tempo de uma session.

Recommended Posts

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 !';
}
?>

agora faremos a página de verificação:

 

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 !';
}
?>

agora faremos o teste, criaremos uma página comum:

 

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.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente transforma-la em segundos ? hehehe

 

se for trabalhar com minutos, acredito que essa seja a melhor forma, mais prefiro ao modo que passei.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;

 

 

 

 

# Usuário não logado

 

if ($usu == 0){ header( "location: index.php" ); exit(); }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem uma função que determina o tempo de vida de uma session é o: session_set_cookie_params

 

@Topic

Bem explicado parabens :)

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.