Jump to content
Fórum Script Brasil
  • 0

TEMPO DE SESSÂO


LeãoBsb

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...