Ir para conteúdo
Fórum Script Brasil
  • 0

Session Php ExpiraÇÃo


Guest - Junior -

Pergunta

Guest - Junior -

Olá,

Fiz um sistema administrativo em PHP usando SESSION, e já percebi que se fico muito tempo logado no sistema sem clicar em nada, quando vou mudar de página, ou qualquer outra coisa, o sistema expira, volta pro login.

Então gostaria de saber qual é o tempo padrão que essa SESSION tem pra não expirar. Pois não limitei isso, nem criei qualquer função pra verificar.

Se alguém souber, manda aí! Valeu e abraços!

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Então, na verdade o que você me passou foi como fazer para limitar esse tempo de expiração. Mas no meu caso, só queria saber quanto tempo o login fica ativo, sem ter limitado nada. Não criei nenhuma função pra verificar o tempo logado. Mas vi que o sistema cai fora sozinho se o usuário não mexer em nada por muito tempo. Acho q uns 30min em média.

Link para o comentário
Compartilhar em outros sites

  • 0

Então, cara... aquela diretiva serve tanto pra mudar, quanto pra saber quanto tempo tem... isso é um padrão do PHP, pode ser mudado no PHP.ini

session_cache_limiter() retorna o nome do atual limitador do cache. Se o cache_limiter está especificado, o nome do limitador do cache atual é mudado para o novo valor.
Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...