Aqui você verá artigos sobre PHP
Moderador: web 9145
 Identificar refresh ou novo acesso com PHP
por web 9145 em 07 Jul 2010 09:57 pm
Tentando achar uma forma encerrar uma session assim que o usuário feche o navegador, pensei em uma forma usando o HTTP_REFERER
A ideia é bem simples. Quando o usuário logar, ele vai clicar em um link para acessar um painel de controle por exemplo: painel.php, toda a navegação a partir daí vai gerar um valor que pode ser capturado pelo $_SERVER['HTTP_REFERER'], esse valor seria a URL que mandou o usuário para o documento atual.
Imagine que existe um documento chamado validacao.php, com um link para teste.php, que vemos abaixo
<?php // iniciando a session session_start();
// aqui é simulado a criação da session // que geralmente é criada após a validação dos dados do formulário // nesse teste, criamos quando clicamos no link if($_GET['criar']) { $_SESSION['navegacao'] = session_id(); }
// pegamos a referência, de onde o usuário veio $referencia = $_SERVER['HTTP_REFERER'];
// verificamos se existe alguma referência e se a session está criada if(isset($referencia) && isset($_SESSION['navegacao'])==session_id()) { echo "navegando internamente"; // se sim, navega-se novamente } else { echo "log-se"; // caso não, pede-se para logar session_destroy(); // também destruímos a session } ?> <a href="teste.php?criar=session">CRIAR SESSION</a>
<a href="teste.php">teste</a> <a href="teste2.php">teste2</a>
Note que quando o usuário chegar a esse documento, vai armazenar em $referencia o valor referente a http://www.seusite.com/validacao.php, que é o link de onde ele veio, referência.
Logo após armazenar, é usado um if para verificar se o usuário veio de alguma referência, se sim, informa que está navegando internamente, caso contrário, pede para logar-se.
Note que tem um link para teste2.php, faça uma cópia do teste só para que você simule uma navegação entre esses 2 arquivos.
Você irá notar que você pode navegar ou dar refresh, que o REFERER não é perdido. Mas, se você fechar a janela e abrir novamente, irá pedir para logar-se.
|
Carregando...
Retornar para PHP - Artigos
Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes