Ir para conteúdo
Fórum Script Brasil

LeãoBsb

Membros
  • Total de itens

    4
  • Registro em

  • Última visita

Sobre LeãoBsb

LeãoBsb's Achievements

0

Reputação

  1. LeãoBsb

    Session Php ExpiraÇÃo

    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.
  2. LeãoBsb

    TEMPO DE SESSÂO

    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.
  3. ksort() AGORA RESOLVE SEU PROBLEMA !!!! http://www.php.net/manual/en/function.uasort.php
  4. LeãoBsb

    TEMPO DE SESSÂO

    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"); }; }; } } ?> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
×
×
  • Criar Novo...