Como o session_cache_expire()normalmente não funciona e muita gente reclama de não saber utilizá-lo, eu criei uma CLASS para tratar o tempo de duração da sessão em um site. Funciona assim: Na página subsequente ao LOGIN, o sistema recebe a HORA ATUAL E O MINUTO ATUAL de carregamento da página e armazena nas $_SESSION (não pode armazenar numa variável, porque ira ser utilizadado entre várias páginas) e soma em outra $_SESSION o valor do tempo máximo que a página poderá ficar inativa. Após esse tempo de inatividade, a CLASS "UNSETA" e destroi tudo que estiver armazenado nas $_SESSION (em geral credênciais de LOGIN, ID's, etc.) e redireciona para uma página (que você poderá escolher, por exemplo de volta à página de login). Vamos então saber como implementá-la: Crie um novo arquivo PHP no local onde você armazena os seus scripts chamado: class.sessao.php. e cole isso: <?php /*--- * PARA ALTERAR O TEMPO DE DURAÇÃO DA SUA SESSÃO (em minutos) * ALTERE, PARA O VALOR DESEJADO, O N° "3" * NAS LINHAS 19,33. ---*/ class limiteTempoSessao { public function limitar(){ session_start(); $_SESSION ['time_m_agora'] = date('i'); # RECEBE O VALOR DO MINUTO ATUAL. $_SESSION ['time_h_agora'] = date('H'); # RECEBE O VALOR DA HORA ATUAL. # A PARTIR DAQUI - COMPARA A HORA ATUAL E OS MINUTO ATUAL PARA DEFINIR SE O TEMPO DE INATIVIDADE FOI ULTRAPASSADO. if ($_SESSION ['time_h_agora'] == $_SESSION ['time_h_fim']){ if ($_SESSION ['time_m_fim'] >= $_SESSION ['time_m_agora']){ $_SESSION ['time_m_agora'] = date("i"); $_SESSION ['time_m_fim'] = date("i")+ 1; $_SESSION ['time_h_fim'] = date("H"); echo "NAVEGANDO NORMAL"; }; if ($_SESSION ['time_m_fim'] < $_SESSION ['time_m_agora']){ session_unset(); session_destroy(); header ("Location: error.php"); }; }; if ($_SESSION ['time_h_agora'] != $_SESSION ['time_h_fim']){ if ($_SESSION ['time_m_fim'] < $_SESSION ['time_m_agora']){ $_SESSION ['time_m_agora'] = date("i"); $_SESSION ['time_m_fim'] = date("i")+ 1; $_SESSION ['time_h_fim'] = date("H"); }; if ($_SESSION ['time_m_fim'] >= $_SESSION ['time_m_agora']){ session_unset(); session_destroy(); header ("Location: error.php"); }; }; } } ?> Na sua página de validação dos dados do USUÁRIO, coloque este código, alterando o valor 1, para o tempo que você deseja que dure a sua sessão, isso também deve ser feito na CLASS acima, nas linhas 18 e 31 do código: session_start(); # INICIA A SESSÃO $_SESSION ['time_m_agora'] = date('i'); # RECEBE O VALOR DO MINUTO ATUAL $_SESSION ['time_h_agora'] = date('H'); # RECEBE O VALOR DA HORA ATUAL $_SESSION ['time_m_fim'] = date("i")+ 1; # SOMA O TEMPO (EM MIN.) QUE VOCÊ DESEJA NA SUA SESSÃO Agora, em cada página que você possui em seu sistema(MENOS A PÁGINA QUE VOCÊ FEZ O PROCEDIMENTO ACIMA), você precisa incluir o arquivo class.sessao.php, instanciar a classe e criar o objeto assim: <?php include 'class.sessao.php'; $sess = new limiteTempoSessao(); $sess->limitar(); ?> Coloque no início do código da página, antes do HTML. Não se esqueça de ver o local onde você salvou o arquivo para não ficar errado o caminho do INCLUDE. LEMBRANDO QUE ESSA CLASS TRATA SOMENTE SO TEMP-O DE PERMANÊNCIA DE VALORES ARMAZENADOS NAS $_SESSION.