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

TEMPO DE SESSÂO


LeãoBsb

Pergunta

Bom pessoal, em face das dúvidas que surgem em relação ao controle de tempo que o usuário pode ficar inativo em um sistema, a busca normal é alguma função nativa que possa resolver esse problema facilmente.

Entretanto a função mais indicada: session_cache_expire() parece não funcionar muito bem.

Portanto desenvolvi uma classe que trata disso.

Tentem implementá-la:

Ná pagina imediatamente após o seu login, utilize o método primeiraPagina(). E nas outras páginas secundárias o paginasSec().

O que acharam ?

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

<?php

/*---

* PARA ALTERAR O TEMPO DE DURAÇÃO DA SUA SESSÃO (em minutos)

* ALTERE, PARA O VALOR DESEJADO, O N° "3"

* NAS LINHAS 13,27,37

---*/

class limiteTempoSessao {

/*---------- METODO PARA USO NA PRIMEIRA PÁGINA DEPOIS DO LOGIN ------------------------------------------*/

public function primeiraPagina(){

session_start();

$_SESSION ['time_m_agora'] = date("i"); # RECEBE O VALOR DO MINUTO ATUAL

$_SESSION ['time_m_fim'] = date("i")+ 3; # ADICIONA O TEMPO DE DURAÇÃO DA SUA SESSÃO

$_SESSION ['time_h_fim'] = date("H"); # RECEBE O VALOR DA HORA ATUAL

}

/*---------- METODO PARA USO EM TODAS AS PÁGINAS SECUNDÁRIAS ---------------------------------------------*/

public function paginasSec(){

session_start();

$_SESSION ['time_m_agora'] = date('i');

$_SESSION ['time_h_agora'] = date('H');

if ($_SESSION ['time_h_agora'] == $_SESSION ['time_h_fim']){

if ($_SESSION ['time_m_fim'] >= $_SESSION ['time_m_agora']){

$_SESSION ['timer_m_fim'] = date("i")+ 3;

};

if ($_SESSION ['time_m_fim'] < $_SESSION ['time_m_agora']){

echo "hora igual - sessão expirada";

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 ['timer_m_fim'] = date("i")+ 3;

};

if ($_SESSION ['time_m_fim'] >= $_SESSION ['time_m_agora']){

echo "hora diferente - sessão expirada";

session_destroy();

header ("Location: error.php");

};

};

}

}

?>

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Instancie assim na pagina inicial, antes das tags HTML:

<?php

include 'class.sessao.php';

$sess = new limiteTempoSessao();

$sess->primeiraPagina();

?>

Instancie assim nas outras páginas, também antes das tags HTML:

<?php

include 'class.sessao.php';

$sess = new limiteTempoSessao();

$sess->paginasSec();

?>

LEMBRANDO QUE ESSA CLASS TRATA APENAS DO TEMPO DE PERMANÊNCIA DAS SESSÕES, ISSO AUXILIA QUANDO SEUS SISTEMA DE LOGIN UTILIZA SESSÕES E VOCÊ DESEJA IMPLEMENTAR UM LOGOFF POR INATIVIDADE.

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,2k
    • Posts
      652k
×
×
  • Criar Novo...