quarta-feira, 22 de setembro de 2010

Destruir sessões PHP por tempo de inatividade


Eu ja vi muito tópicos ai pelos fóruns inclusive hoje então vamos lá!.

Primeiro vamos criar o arquivo Autentica.php  é onde você vai autenticar o usuário.
<?php
session_start();

// seta configurações fusuhorario e tempo limite de inatividade//
date_default_timezone_set("Brazil/East");
$tempolimite = 900;
//fim das configurações de fusu horario e limite de inatividade//

// aqui ta o seu script de autenticação no momento em que ele for validado você seta as configurações abaixo.//
// seta as configurações de tempo permitido para inatividade//
 $_SESSION['registro'] = time(); // armazena o momento em que autenticado //
 $_SESSION['limite'] = $tempolimite; // armazena o tempo limite sem atividade //
// fim das configurações de tempo inativo//
?>
Agora o arquivo AreaRestrita.php é nele que vamos verificar o tempo de inatividade.

<?php
$registro = $_SESSION['registro'];
$limite = $_SESSION['limite'];
if($registro)// verifica se a session  registro esta ativa
{
 $segundos = time()- $registro;
}
// fim da verificação da session registro

/* verifica o tempo de inatividade 
se ele tiver ficado mais de 900 segundos sem atividade ele destroi a session
se não ele renova o tempo e ai é contado mais 900 segundos*/
if($segundos>$limite)
{
 session_destroy();
 die( "Sua seção expirou.");

}
else{
 $_SESSION['registro'] = time();
}
// fim da verificação de inatividade
?>

5 comentários:

Anônimo disse...

Valeu mesmo,deu certo aqui.

Anônimo disse...

Este tutorial me ajudou bastante muito obrigado pelo interesse em postar códigos relevantes.

Anônimo disse...

cara muito bom , sou novato na area e gostaria de saber se é possivel usar este mesmo metodo para encerrar um cadastro digamos como exemplo por 10 dias,??? obrigado pela atenção e parabens pelo tutorial.

Diego Cipriano disse...

Tem como encerrar um cadastro em um prazo pré determinado sim, existem várias formas de fazer isso mas como acredito que esse cadastro você esta salvando em um banco de dados interno podemos elimiar o cache e o storage dos navegadores modernos, então se você deseja manter um cadastro mesmo depois de espirado você pode colocar um campo chamado STATUS e uma com a data de criação do cadastro dai você vai criar uma rotina para o seu sistema verificar todos os dias às 24:00 se existe algum cadastro com X dias cadastrado e se houver mude o status para 0 depois é só fazer um filtro segue um exemplo abaixo:


$sql = mysql_query("SELECT * FROM tbl_Cadastros WHERE Senha = '". $Senha ."' && Usuario = '". $Usuario ."' && Status = 1 LIMIT 1");

Observação para usar as apas duplas é necessário passar a variável dentro de uma função contra sql injection

http://diego-cipriano.blogspot.com.br/2010/09/como-armazenar-dados-no-bd-sem-correr-o.html

Anônimo disse...

vc tem e-mail pode me passar ????

Postar um comentário

Related Posts with Thumbnails