|
|
|
||||||||||||||||||||||
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Parceiros - CSS para Web Design - S.O.S Designers - Slackware-Brasil - Crie seu Web site - Oficina da Net |
Diferentes formas de fechar sessão em PHPComo fechar uma sessão autenticada corretamente, por inatividade ou por fechamento do navegador por parte do usuário. Veremos como fechar a sessão do usuário quando:
Algo que pode parecer muito óbvio para uns e muito complexo para outros, mas que inegavelmente muitos de nós já nos perguntamos em algum momento: Como expirar uma sessão em PHP? Agora veremos que simples é. Só temos que:
<? //vemos se o usuário e senha são válidos if ($_POST["usuario"]=="miguel" && $_POST["senha"]=="qwerty"){ //usuario e senha válidos session_name("loginUsuario"); //atribui um nome à sessão para poder salvar diferentes dados session_start(); // inicio l sessão $_SESSION["autenticado"]= "SI"; //defino a sessão que demonstra que o usuário está autorizado $_SESSION["ultimoAcesso"]= date("Y-n-j H:i:s"); //defino a data e hora de inicio de sessão em formato aaaa-mm-dd hh:mm:ss header ("Location: aplicacao.php"); }else { //se não existe lhe mando outra vez ao portal header("Location: index.php?errousuario=si"); } ?> Fechamento de sessão por inatividade em PHP: módulo de segurança O segundo passo, será comprovar o tempo transcorrido entre a data salva e a hora atual em nossa camada de segurança e atuar em conseqüência. Para fazê-lo, teremos que realizar um cálculo muito simples: tempo transcorrido = (hora atual - data salva) E logo, restará saber se o tempo transcorrido é maior, menor ou igual que o tempo de expiração da sessão (representado como "x"): se (tempo transcorrido >= x), atuo em conseqüência ao achado Para efetuar estes cálculos utilizaremos como unidade de tempo o segundo. Em nosso exemplo, expiraremos a sessão, transcorridos 10 minutos de inatividade (onde: 10*60 = 600 segundos). Para efetuar estes cálculos e tomar como unidade de medida o segundo, será necessário converter as datas a segundos. Para isso, utilizaremos a função strtotime. Portanto, calcularemos o tempo transcorrido (tempo transcorrido = (hora atual - data salva)) da seguinte maneira: <? //iniciamos a sessão session_name("loginUsuario"); session_start(); //antes de fazer os cálculos, comprovo que o usuário está logado //utilizamos o mesmo script que antes if ($_SESSION["autenticado"] != "SI") { //se não está logado o envio à página de autenticação header("Location: index.php"); } else { //senão, calculamos o tempo transcorrido $dataSalva = $_SESSION["ultimoAcesso"]; $agora = date("Y-n-j H:i:s"); $tempo_transcorrido = (strtotime($agora)-strtotime($dataSalva)); //comparamos o tempo transcorrido if($tempo_transcorrido >= 600) { //se passaram 10 minutos ou mais session_destroy(); // destruo a sessão header("Location: index.php"); //envio ao usuário à página de autenticação //senão, atualizo a data da sessão }else { $_SESSION["ultimoAcesso"] = $agora; } } ?>
Autoria e outras referências sobre este artigo Dentro deste artigo: + 1 manual relacionado + 2 Categorias relacionadas
Manuais relacionados com este artigo Dentro de Sistema de autenticação PHP Anterior: Sair da aplicação segura em PHP Categorias relacionadas Através das categorias do nosso diretório podem ser encontrados outros tipos de recursos relacionados com este artigo: + Entrar em PHP+ Entrar em Scripts em PHP Comentários dos visitantes Os comentários dos visitantes são para ampliar a informação do artigo. Todos podem participar.
|
| Sobre nós | Copyright | Anuncie | Entrar em contato | <criarweb> |