Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17562
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Identificar refresh ou novo acesso com PHP

07-07-2010 21:57

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.
1
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado